6
votes

Ce qui est mieux? Nombre élevé d'appels de service Web (messages SOAP) ou une quantité élevée de données dans un seul message SOAP?


Je concevons une application mobile qui obtient des données de serveur via des messages de savon.

Je voulais savoir quelle est la meilleure pratique:

  • Plus Nombre d'appels de service Web récupérant moins de données dans chaque appel de message SOAP.
    Ou
  • Je reçois toutes les données dans un seul appel de service Web, mais la longueur du message SOAP serait grande.

    La grande quantité de données dans un seul message de savon ne créerait-il pas de problèmes de connectivité de données pour l'abonné mobile.

    Dans ma demande d'une année donnée, je dois recevoir des noms de tous les constructeurs automobiles et noms de modèle pour toutes les voitures par chaque fabricant. J'ai deux projets:
  • Comme l'utilisateur sélectionne une année, j'envoie un service Web qui obtiendra toutes les données.
  • Comme l'utilisateur sélectionne une année, je reçois les noms des fabricants, puis lorsque l'utilisateur sélectionne un fabricant, je reçois tous les modèles pour ce fabricant.
    S'il vous plaît aider en me disant quelle approche dois-je prendre.

    * ps: * L'utilisateur peut avoir de nombreux véhicules et si j'utilise une seconde approche, les services Web seront appelés à chaque véhicule.


4 commentaires

exactement ce que je cherchais des années ... grande question mayne


Le savon est l'architecture anti-recommandée à utiliser lors de la mise en place de services pour les appareils mobiles. Vous devez utiliser une architecture reposante et envoyer des données de préférence dans JSON


@Ovidiulatcu Merci mais le client pour qui je travaille utilise déjà cette architecture, donc je ne peux pas changer cela.


Si l'utilisateur a plusieurs véhicules, envoyez une demande globale: «Obtenez-moi les détails pour A, B et C». La réponse devrait également être agrégée: "Voici les détails pour A, B et C". Ne faites pas votre filtrage du côté du client si vous pouvez vous en tirer. La latence est moins un problème s'il y a une action utilisateur entre chaque appel Web.


3 Réponses :


3
votes

Couple de points

  1. Comme indiqué dans le commentaire Utilisez JSON au lieu de savon que jamais possible, le savon est très lourd et n'est pas recommandé de nos jours. (Regardez tous les points finaux exposés par Google et d'autres personnes - la plupart d'entre eux Utilisez JSON)

  2. Si la taille XML devient trop volumineuse (au-delà de quelques kilo-octets), il est préférable de faire plusieurs appels plutôt que de charger un gros objet en mémoire.


3 commentaires

Le savon ou JSON n'est qu'un format. La question reste: 1 appel JSON avec de nombreux objets à l'intérieur ou plusieurs appels JSON avec moins de données


Je préférerais le second si la taille JSON est grande


Dans Mobile Quelques requêtes HTTP est une meilleure option.



1
votes

Quel genre de réponses de taille parle-t-on - min / max / typique?

Il n'y a pas de réponse simple à cette question car cela dépend de ce qui déclenche la demande de service Web par ex. est-ce en réponse à une action utilisateur, chronométré, etc.

La latence est l'un des tueurs sur des réseaux mobiles (plus important que la bande passante basse), donc en théorie, vous devez visionner un nombre minimum de demandes.

mais ...

Il ne sert à rien de faire de grandes demandes si vous n'avez pas besoin des données.

Je suppose que vous allez devoir tester avec différentes tailles de réponse pour trouver la tache sucrée.

N'oubliez pas non plus d'autoriser Gzip / dégonfler dans la demande et comprimer la réponse du serveur.

Si possible, j'irais également une approche reposante et assurez-vous que les réponses reçues sont cachables


4 commentaires

Merci ... J'ai mis à jour la question en conséquence. s'il vous plaît donnez votre avis.


J'utiliserais la deuxième approche I.e. Obtenez les fabricants, puis quand on a été choisi, obtenez les modèles - il n'ya guère de point dans l'obtention de toutes les données possibles si l'utilisateur va forer à un sous-ensemble


Mais cela ne ferait-il pas que ma demande lente ... Comme mon utilisateur peut avoir plus d'un véhicule, puis l'appel doit être apporté à tous les véhicules.


Testez les deux solutions dans diverses conditions seront le seul moyen de recevoir une réponse «réelle». Mais s'il y a 350 fabricants et qu'ils ont dix modèles chacun, vous envisagez une réponse de 350 articles, suivis d'un (quelques-uns?) De dix, par opposition à l'un de 3500 si vous obtenez tout en un.



2
votes

sur une connexion mobile, je choisirais des réponses plus importantes en raison de la latence du réseau. Il vaut mieux chercher un tas de choses en une fois que d'aller chercher chaque article dans une nouvelle tension. Cela gardera votre application rapide.

Les réponses encore plus importantes peuvent être traitées efficacement sans avoir besoin de stocker ceux en mémoire si vous utilisez une bibliothèque qui peut "diffuser" la réponse.


0 commentaires