我目前正在做的是将带有时间戳和其他参数的GPS数据发送到远程MSSQL数据库。首先,我通过ksoap2将其发送到SOAP WebService。由于巨大的开销,我寻找了一种替代方案,并通过JTDS实现了直接插入它的数据传输。在我成功地实现了这两种方法之后,我开始对它们进行比较。我试着找出哪一个造成了更大的流量。我分析了网络流量,令我惊讶的是,SOAP比JTDS更便宜。是不是很奇怪?我已经发送了相同的数据。我使用的是JTDS 1.2.7驱动程序。ksoap导致大约1.8 kByte流量,而为了比较,JTDS导致大约2.1 kByte。
有没有人做过同样的体验,或者能告诉我我可以改变什么?
以下是JTDS代码。也许有人能告诉我,是什么导致了交通:
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
String connString = "jdbc:jtds:sqlserver://192.XXX.X.XX/xxxx;encrypt=false;user=XX;password=XX;instance=SQLEXPRESS;";
conn = DriverManager.getConnection(connString);
} catch (Exception ex){
ex.printStackTrace();
}
try {
Log.w("Connection", "open");
CallableStatement cs = conn.prepareCall("{ call SetGPS(?, ?, ?, ?, ?, ?, ?)}");
cs.setString(2, latitude);
cs.setString(3, longitude);
cs.setInt(4, ID);
cs.setString(5, timestamp);
cs.setString(6, IMEI);
cs.setInt(7, userID);
cs.registerOutParameter(1, Types.VARCHAR);
cs.execute();
String response = cs.getString(1);
Log.i("GPS Response:", response);
conn.close();
} catch (Exception ex){
ex.printStackTrace();
}发布于 2012-11-28 22:01:07
好吧,我发现是连接建立导致了JTDS四分之三的网络流量。带有参数的实际存储过程调用仅导致大约400字节的通信量。
因此,如果我们不是在每次想要通过JTDS (JDBC)发送数据时都建立连接,那么我们就比使用SOAP便宜得多。
希望有一天这能帮助其他人;)
https://stackoverflow.com/questions/13588851
复制相似问题