web-dev-qa-db-fra.com

Performances de SOAP vs. XML-RPC ou REST

Les arguments sur la simplicité des solutions utilisant XML-RPC ou REST sont faciles à comprendre et difficiles à argumenter.

J'ai souvent entendu aussi des arguments que l'augmentation des frais généraux de SOAP peut avoir une incidence significative sur la bande passante et éventuellement une latence. J'aimerais voir les résultats d'un test qui quantifie l'impact. Quelqu'un peut connaître un bonne source pour ces informations?

47
Bradley Harris

Il y a quelques études qui ont été faites concernant ce que vous pourriez trouver informatif. S'il vous plaît voir ce qui suit:

Il existe également une conversation de performance intéressante (un peu obsolue) sur le sujet Forums MSDN .

En bref - la plupart de ces sources semblent convenir que SOAP _ et REST sont à peu près la même performance pour les données à usage général. Certains résultats semblent toutefois indiquer qu'avec des données binaires, REST peut en réalité être moins performante. Voir les liens dans le forum que j'ai lié pour plus de détails à ce sujet.

6
Troy Alford

L'impact principal de la vitesse de SOAP vs. REST ne doit pas faire de vitesse de fil, mais avec une cachabilité. REST= suggère d'utiliser la sémantique du Web au lieu d'essayer de le tuner via XML, des services Web si reposants sont généralement conçus pour utiliser correctement les en-têtes de cache. Ils fonctionnent donc bien avec l'infrastructure standard du Web, telles que les proxies de mise en cache et même les caches de navigateur locales. Aussi, en utilisant le La sémantique de Web signifie que des éléments comme Etags et la compression zip automatique sont bien compris les moyens d'accroître l'efficacité.

..et Maintenant, vous dites que vous voulez des points de repère. Eh bien, avec l'aide de Google, j'ai trouvé n gars dont les essais indiquent REST pour être 4-6x plus rapidement que SOAP et un autre - papier qui favorise également le repos.

63
pjz

Le repos en tant que protocole ne définit aucune forme d'enveloppe de message, tandis que SOAP a cette norme.

Il est quelque peu simpliste d'essayer de comparer les deux, ce sont des pommes aux oranges.

Cela dit, A SOAP enveloppe (moins les données) n'est que quelques k, il ne devrait donc pas y avoir de différence de vitesse notable à condition que vous récupérez un objet sérialisé via les deux SOAP et reste.

19
FlySwat

Le savon et tout autre protocole utilisant XML gonflent généralement vos messages un peu - cela peut être un problème en fonction du contexte.

Quelque chose comme JSON serait plus compact et peut-être plus rapide à Serialise/Déserialise - mais ne l'utilisez pas exclusivement pour cette raison. Faites ce que vous ressentez du sens à l'époque et le changer si c'est un problème.

Tout ce qui utilise http typiquement (sauf réutilisation d'une connexion Keepalive HTTP 1.1, que de nombreuses implémentations ne font pas) démarrent une nouvelle connexion TCP pour chaque demande; C'est assez mauvais, en particulier sur des liens de latence élevés. HTTPS est bien pire. Si vous avez beaucoup de demandes courtes d'un expéditeur à un récepteur, réfléchissez à la manière dont vous pouvez prendre ces frais généraux.

Utilisation de HTTP pour n'importe quel type de RPC (si SOAP ou autre chose) va toujours engager cette surcharge. D'autres protocoles RPC vous permettent généralement de garder une connexion ouverte.

8
MarkR

Expansion sur la réponse de "PJZ".

Si vous obtenez beaucoup d'informations (get * Type d'appels) basés SOAP Opérations, il n'existe actuellement aucun moyen que vous puissiez les mettre en cache. Mais si vous deviez implémenter ces mêmes opérations en utilisant le repos Il est possible que les données (dépend de votre contexte commercial) puissent être mises en cache, comme mentionné ci-dessus. Parce SOAP UTILISATION POST pour ses opérations, elle ne peut pas mettre en cache les informations sur le côté serveur.

5
anjanb

Le savon est définitivement plus lent. Les charges utiles sont nettement plus importantes qui sont plus lentes à assembler, transport, analyse, validation et processus.

4
pbreitenbach

Je ne connais aucune réponse à la question de référence, cependant, ce que je sais sur le fichier SOAP FORMAT est oui, il a des frais généraux, mais que les frais généraux n'augmentent pas par demande: si Vous avez un élément envoyé au service Web, vous avez une construction aérienne + un élément, et si vous disposez de 1000 éléments envoyés au service Web, vous avez une construction de plusieurs éléments + 1000 éléments. La tête se produit comme la demande XML est formatée pour le particulier opération, mais chaque élément d'argument individuel de la demande est formaté de la même manière.

Si vous vous tenez à des rafales répétables et courtes de données (disons, 500 éléments), la vitesse doit être acceptable.

2
MetroidFan2002

Je suppose que la question principale ici est la compage de RPC avec du savon.

ils servent tous les deux la même approche de l'abstraction de communication en ayant des objets stubs que vous opérez avec des types de données primitive/complexes que vous récupérez sans vraiment savoir comment tout est géré en dessous.

Je préférerais toujours (Json-) RPC parce que

  • c'est léger
  • il existe de nombreuses grandes implémentations pour toutes les langues de programmation
  • c'est simple d'apprendre/d'utiliser/créer
  • c'est rapide (surtout avec Json)

bien qu'il y ait des raisons pour lesquelles vous devriez utiliser du savon, c'est-à-dire si vous avez besoin de paramètres de nommage au lieu de s'appuyer sur leur ordre correct

quelque plus de détails que vous obtenez de cette scaleverflow question

0
smoebody