10
votes

Quel est le meilleur protocole de communication client serveur à utiliser dans Android et iOS?

Nous avons une application de serveur (mise en œuvre en Java) qui fournira certaines données pour nos applications mobiles. Les applications seront créées pour Android et iOS.

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

merci.

Edit: il devrait s'agir d'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 il est donc moins de frais généraux.

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 la rallonge Y". Le serveur répond avec la liste.

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


5 commentaires

Meilleur pour quoi? Avez-vous besoin de chaque bit de données à livrer ou de perdre des données OK (par exemple la VoIP)? Avez-vous besoin d'assurances d'intégrité et de confidentialité? Avez-vous besoin que cela ait une petite latence? Trop de variables imo.


En outre, que changez-vous? Avez-vous 5 types de message? dix? 50? Les messages sont-ils simples ou complexes?


@OMry & @piskvor Pour une efficacité réelle ou si vous êtes en streaming, vous êtes à 100%, mais je trouve en train de choisir autre chose que http, au moins initialement, est une optimisation prématurée. surtout si cela semble même vaguement comme s'il s'agit d'un modèle de demande / de réponse


@TOBYODAVIES: HTTP est juste un protocole Meta. Ce n'est pas beaucoup plus utile que de dire TCP. Quel protocole que vous avez choisi (code binaire codé à la main, la sérialisation de l'objet, la série de protocouduf / tharift) dépend de nombreux facteurs.


Je n'ai pas vu que beaucoup formel réutilisables protocoles construits sur HTTP et il demande des bibliothèques, la plupart des gens construisent leur propre protocole sur le HTTP ... i Envoyez habituellement JSON ou XML sur HTTP. Bien qu'il s'agisse définitivement de cette façon (ce qui est une bonne chose tm)


3 Réponses :


14
votes

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


Quant à la mise en œuvre, je suggère un Service Web reposant en utilisant JSON format. JSON est bien normalisé, a de petites frais générales et vous avez de bonnes bibliothèques pour travailler avec elle dans n'importe quelle langue (consultez org.json , qui est groupé avec Android mais peut être téléchargé en tant que autonome pour d'autres applications aussi). Découvrez cette question aussi:


6 commentaires

Je pense que http est le protocole de choix. Ce qui est encore nécessaire, ce sont des recommandations pour les bibliothèques prêtes à être recommandées et répondent toujours aux exigences.


"Quant à un format, je suggère Json sur une API ressemblant à un repos." Est-ce juste moi ou cette phrase est-elle vraiment absurde?


Le repos @Serguei fait référence à la manière dont les ressources sont situées et accessibles (c'est-à-dire à l'aide de HTTP GET / POST / MET / Supprimer et donnez à chaque ressource une URL (localisateur de ressources unique)). JSON fait référence au format actuel utilisé pour décrire les ressources. Voir ici . Donc non, ce n'est pas un non-sens.


Oh maintenant je vois ce que tu commenciais à; Je connais à la fois Json et le repos, mais de la façon dont la phrase est écrite, je pensais initialement que vous préconisiez JSON vs repose comme s'il s'agissait de formats de données. ("..over un protocole de repos." aurait été clair, pour moi au moins)


@Serguei Merci pour l'avis, j'ai édité ma réponse. Espérons que c'est plus clair maintenant.


Pour que la bibliothèque utilise dans les communications, utilisez Afnetworking - il a une sous-classe qui comprend et analyse automatiquement JSON. Je ne m'inquiéterais pas à propos de l'analyseur JSON que vous utilisez à moins que vous n'ayez vraiment grand Json (disons plus de 10 km environ).



3
votes

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

1. jackson est 2 fois plus rapide que JSON et convient à une analyse complexe et extrêmement gros jsons.

2. gson de manière compétitive plus rapide que JSON.


0 commentaires

0
votes

À mon avis, vous devez utiliser des SEP / SOAP SIB SEVICES sur la base de structures orientées sur les documents, cela sera utile dans la grande réponse.

Vous pouvez également integérer Apache Solr à cet effet utilisé pour l'indexation des grands ensembles de données et est Même beaucoup plus rapide et que ce repose également activé, vous pouvez indexer vos données dans les noyaux SOLR, puis créer des appels de repos à partir du client IE IOS, Android, PHP, etc. Les documents seront donc déjà traités et vous devez simplement ajouter des filtres et autres les choses nécessaires sur le client.

Faites-moi savoir si vous voulez plus d'aide pour cela.


0 commentaires