Сценарий:
- Я разрабатываю приложение для
Windows Mobile
, с Vb.net
2005.
- Я разрабатываю приложение для
Android
с Eclipse
.
Оба приложения имеют одинаковую логику. Оба приложения используют одни и те же веб-службы.
Сервер работает в Windows Server 2003
, а приложение-служба развернуто с использованием VB.net 2005
.
Тест:
- Samsung Galaxy S2 с
Android
.
- устройство Someone Chine с
Windows Mobile
.
Тот же вызов веб-службы занимает:
Android
время: 3 минуты 44 секунды.
Windows Mobile
время: 0 минут 54 секунды.
Время было рассчитано с использованием часов и представляет время пользователя.
Отличия:
Windows Mobile
отправляет и получает таблицы данных.
Windows Mobile
отправляет фотографии сериализацией Base64 (5 фотографий по 30 КБ каждая)
Android
отправляет и получает JSON
(данные могут быть преобразованы в JSON
)
Android
отправляет фотографии сериализацией Base64 (5 фотографий по 30 КБ каждая)
Почему время так отличается?
В Android
Я использую веб-сервис, используя следующий код:
открытый класс Func_WebService {
private static int Ksoap_timeout = 40000;
private static String NAMESPACE = "http://tempuri.org/";
private static String URL="http://XXX.137.xxx.79/Sincro_test_android/Service1.asmx";
private static SoapObject request=null;
private static SoapSerializationEnvelope envelope=null;
private static SoapPrimitive resultsRequestSOAP=null;
public static String PRIMERLOGGIN(String Usuario,String Contrasena,String Emei){
final String METHOD_NAME = "PRIMERLOGGIN";
final String SOAP_ACTION ="http://tempuri.org/PRIMERLOGGIN";
request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("user", Variables.Usuario);
request.addProperty("pass", Variables.Contrasena);
request.addProperty("X", Variables.Emei);
envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true; //se asigna true para el caso de que el WS sea de dotNet
envelope.setOutputSoapObject(request);
HttpTransportSE transporte = new HttpTransportSE(URL);
try {
transporte.call(SOAP_ACTION, envelope);
resultsRequestSOAP = (SoapPrimitive)envelope.getResponse();
return resultsRequestSOAP.toString() ;
}
catch (Exception e) {
return Estados_Sincro.Error_coneccion;
}
}