2010-11-25 3 views
10

Nous avons une application serveur (implémentée en Java) qui fournira des données pour nos applications mobiles. Les applications seront créées pour Android et iOS.Quel est le meilleur protocole de communication client à utiliser sous Android et iOS?

Quel est le meilleur protocole/bibliothèque à cet effet? Les frais généraux du protocole devraient être aussi faibles que possible.

Merci.

Editer: Il devrait être une demande-> réponse szenario. Les données perdues ne sont pas acceptables. La réponse pourrait contenir une longue liste de données et donc moins de frais généraux sont requis.

Le client doit demander les données (une clé spécifiée et certains paramètres définis), par ex. "donnez-moi tous les fichiers du dossier x qui ont l'extension y". Le serveur répond avec la liste.

La première idée était d'utiliser XMLRPC, mais les réponses générées sont trop grandes.

+1

Meilleur pour quoi faire? Avez-vous besoin de chaque bit de données à fournir, ou avez-vous des données perdues OK (par exemple VoIP)? Avez-vous besoin d'assurances d'intégrité et de confidentialité? Avez-vous besoin d'avoir une petite latence? Trop de variables IMO. – Piskvor

+0

aussi, que transférez-vous? Avez-vous 5 types de messages? dix? 50? les messages sont-ils simples ou complexes? –

+1

@Omry & @piskvor pour une efficacité réelle ou si votre flux de diffusion vous avez raison à 100% mais je trouve que choisir autre chose que HTTP, au moins au début, est une optimisation prématurée. surtout si cela ressemble vaguement à un modèle de requête/réponse – tobyodavies

Répondre

13

Pour la plupart des applications, HTTP (S) est le meilleur protocole à utiliser. Les frais généraux (c'est-à-dire les en-têtes) sont assez petits, le transfert peut être gzippé, la connexion peut être sécurisée (via SSL). De plus, les ports 80 (HTTP) et 443 (HTTPS) seront ouverts dans 99% des cas. Les autres ports ne le sont pas - par exemple, certains transporteurs bloquent tous les autres ports à moins que vous ne payiez un supplément.


En ce qui concerne la mise en œuvre, je suggère un RESTful web service en utilisant le format JSON. JSON est bien standardisé, a une petite surcharge et vous avez de bonnes bibliothèques pour travailler avec elle dans n'importe quelle langue (consultez org.json, qui est livré avec Android, mais peut aussi être downloaded comme autonome pour d'autres applications). Consultez cette question aussi:

+0

Je pense que HTTP est le protocole de choix. Ce qu'il faut encore, ce sont des recommandations pour des bibliothèques prêtes à l'emploi qui sont recommandables et qui répondent toujours aux exigences. – gamma

+1

"Comme pour un format, je suggère JSON sur une API de type REST." Est-ce juste moi ou cette phrase est-elle vraiment absurde? – Serguei

+0

@Serguei REST fait référence à la façon dont les ressources sont localisées et accédées (c'est-à-dire en utilisant HTTP GET/POST/PUT/DELETE et en donnant à chaque ressource une URL (Unique Resource Locator)). JSON fait référence au format utilisé pour décrire les ressources. Voir [ici] (http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services). Donc non, ce n'est pas un non-sens. – Felix

3

analyseur Utilisez Jackson ou analyseur Gson au lieu de JSON Parser.

1. Jackson est 2X plus rapide que JSON et convient à l'analyse de fichiers complexes et extrêmement volumineux.

2. Gson plus rapide que JSON.

0

Dans mon opinion, vous devriez utiliser des services web REST/SOAP basés sur des structures orientées document, ce qui sera utile dans la réponse Large.

Vous pouvez également utiliser Apache SOLR pour cela. Utilisé pour l'indexation des grands ensembles de données. Il est encore plus rapide et REST activé, vous pouvez indexer vos données dans les cœurs SOLR, puis créer des appels REST à partir du client. , Android, PHP, etc, donc les documents seront déjà traités et vous avez juste besoin d'ajouter des filtres et d'autres choses comme requis sur le client. Faites-moi savoir si vous voulez plus d'aide à ce sujet.

Questions connexes