2010-11-25 22 views
10

Tenemos una aplicación de servidor (implementada en Java) que proporcionará algunos datos para nuestras aplicaciones móviles. Las aplicaciones se crearán para Android e iOS.¿Cuál es el mejor protocolo de comunicación del cliente servidor para Android e iOS?

¿Cuál es el mejor protocolo/biblioteca para este propósito? La sobrecarga del protocolo debe ser lo más pequeña posible.

Gracias.

Editar: Debe ser una solicitud-> respuesta szenario. La pérdida de datos no es aceptable. La respuesta podría contener una larga lista de datos y, por lo tanto, se requiere menos sobrecarga.

El cliente deberá solicitar los datos (una clave especificada y algunos parámetros definidos), p. "dame todos los archivos de la carpeta x que tengan la extensión y". El servidor responde con la lista.

La primera idea fue usar XMLRPC, pero las respuestas generadas son demasiado grandes.

+1

¿Mejor para qué? ¿Necesita que se entreguen todos y cada uno de los datos o se pierden los datos (por ejemplo, VoIP)? ¿Necesita garantías de integridad y confidencialidad? ¿Necesitas que tenga una latencia pequeña? Demasiadas variables IMO. – Piskvor

+0

también, ¿qué transfieres? ¿tienes 5 tipos de mensajes? 10? 50? son los mensajes simples o complejos? –

+1

@Omry & @piskvor para una eficacia real o si su material de transmisión está 100% correcto, pero creo que la elección de algo que no sea HTTP, al menos inicialmente, es una optimización prematura. especialmente si se ve incluso vagamente como si fuera un patrón de solicitud/respuesta – tobyodavies

Respuesta

13

Para la mayoría de las aplicaciones, HTTP (S) es el mejor protocolo para usar. La sobrecarga (es decir, los encabezados) es bastante pequeña, la transferencia se puede descomprimir, la conexión se puede asegurar (a través de SSL). Además, los puertos 80 (HTTP) y 443 (HTTPS) estarán abiertos en el 99% de los casos. Otros puertos no son, por ejemplo, algunos operadores bloquean todos los demás puertos a menos que paguen más.


En cuanto a la aplicación, que sugieren una RESTful web service utilizando el formato JSON. JSON está bien estandarizado, tiene una pequeña sobrecarga y tiene buenas bibliotecas para trabajar con él en cualquier idioma (consulte org.json, que se incluye con Android pero puede ser downloaded como independiente para otras aplicaciones también). Echa un vistazo a esta pregunta, también:

+0

, creo que HTTP es el protocolo de elección. Lo que todavía se necesita son recomendaciones para bibliotecas listas para usar que son recomendables y aún cumplen con los requisitos. – gamma

+1

"En cuanto a un formato, sugiero JSON sobre una API similar a REST". ¿Soy solo yo o esta frase realmente tonta? – Serguei

+0

@Serguei REST se refiere a la forma en que se ubican y acceden los recursos (es decir, utilizando HTTP GET/POST/PUT/DELETE y dando a cada recurso una URL (Unique Resource Locator)). JSON se refiere al formato real utilizado para describir los recursos. Ver [aquí] (http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services). Entonces no, no es una tontería. – Felix

3

Uso Jackson analizador o Gson analizador JSON en lugar de Analizador.

1. Jackson es 2X más rápido que JSON y es adecuado para analizar jsons complejos y extremadamente grandes.

2. Gson competitivamente más rápido que JSON.

0

En My Opinion, debe usar los servicios web REST/SOAP basados ​​en estructuras orientadas a documentos, Esto será útil en la respuesta grande.

También puede integrar Apache SOLR para este propósito Esto se utiliza para indexar los grandes conjuntos de datos y es mucho más rápido y también está habilitado para REST, puede indexar sus datos en los núcleos SOLR y luego crear llamadas REST del cliente, es decir IOS , Android, PHP, etc., por lo que los documentos ya se procesarán y solo tendrá que agregar filtros y otras cosas según sea necesario en el cliente.

Avíseme si necesita más ayuda con respecto a esto.

Cuestiones relacionadas