2012-11-27 4 views
0

현재 내가하고있는 작업은 타임 스탬프 및 기타 매개 변수가있는 GPS 데이터를 원격 MSSQL 데이터베이스로 보냅니다. 처음에는 ksoap2를 통해 SOAP WebService로 보냈습니다. 엄청난 오버 헤드 때문에 대안을 찾은 다음 JTDS를 통해 데이터 전송을 구현하여 직접 삽입했습니다. 두 메서드를 모두 성공적으로 구현 한 후에 비교를 시작했습니다. 어느 것이 더 많은 트래픽을 유발하는지 알아 내려고 노력했습니다. 네트워크 트래픽을 분석 한 결과 놀랍게도 SOAP은 JTDS보다 저렴했습니다. 이 이상하지 않니? 동일한 데이터를 보냈습니다. JTDS 1.2.7 드라이버를 사용하고 있습니다. ksoap으로 인해 ca가 발생합니다. 1.8 kByte 트래픽 및 비교를 위해 JTDS는 ca. 2.1 kByte.Android : SOAP 및 JTDS 오버 헤드

누구나 동일한 경험을하거나 나에게 무엇을 바꿀 수 있는지 말할 수 있습니까?

het the JTDS code. 어쩌면 누군가가 트래픽의 원인이 무엇을 말해 줄 수 :

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

답변

0

좋아, 나는 그것이 JTDS와 네트워크 트래픽의 4 분의 3의 원인이되는 연결 축적의 사실을 발견했습니다. 매개 변수가있는 실제 저장 프로 시저 호출은 ca 만 발생합니다. 400 바이트 트래픽.

그래서 JTDS (JDBC)를 통해 데이터를 전송할 때마다 연결을 구축하지 않으면 우리는 SOAP보다 훨씬 저렴합니다.

희망 언젠가는 다른 사람을 도울 것입니다.)