0

私が現在行っているのは、タイムスタンプやその他のパラメーターを含む GPS データをリモートの MSSQL データベースに送信することです。最初に、ksoap2 経由で SOAP WebService に送信しました。オーバーヘッドが非常に大きいため、別の方法を探し、JTDS を介して直接挿入するデータ転送を実装しました。両方の方法の実装に成功した後、それらの比較を開始しました。どちらがより多くのトラフィックを引き起こしているかを見つけようとしました。ネットワーク トラフィックを分析したところ、驚いたことに、SOAP は JTDS よりも安価でした。これはおかしくないですか?同じデータを送信しました。JTDS 1.2.7 ドライバーを使用しています。ksoap は ca を引き起こします。1.8 kByte のトラフィックと比較すると、JTDS の原因は約 . 2.1キロバイト。

誰かが同じ経験をしたか、私が何を変えることができるか教えてくれましたか?

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();
}
4

1 に答える 1

0

わかりました。JTDS でネットワーク トラフィックの 4 分の 3 を引き起こしているのは、接続の構築であることがわかりました。パラメータを使用した実際のストアド プロシージャの呼び出しでは、ca のみが発生します。400 バイトのトラフィック。

したがって、JTDS (JDBC) を介してデータを送信するたびに接続を構築しなければ、SOAP を使用するよりもはるかに安価になります。

これがいつか他の誰かを助けることを願っています;)

于 2012-11-28T14:01:07.340 に答える