Question

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

J'ai aussi souvent entendu des arguments selon lesquels l'augmentation des frais généraux de SOAP pouvait avoir un impact significatif sur la bande passante utilisée, voire sur la latence. J'aimerais voir les résultats d'un test qui quantifie l'impact. Quelqu'un connaît-il une bonne source pour de telles informations?

Était-ce utile?

La solution

Il existe quelques études sur ce sujet que vous pourriez trouver informatives. Veuillez consulter les informations suivantes:

Il existe également une conversation de performance intéressante (un peu obsolète) sur le sujet à l'adresse Forums MSDN .

En bref, la plupart de ces sources semblent d’accord pour dire que SOAP et REST ont à peu près les mêmes performances 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 performant. Voir les liens dans le forum que j'ai lié pour plus de détails à ce sujet.

Autres conseils

L’incidence principale de la vitesse SOAP par rapport à REST n’est pas liée à la vitesse du fil, mais à la cachabilité. REST suggère d'utiliser la sémantique du Web au lieu d'essayer de la passerelle via XML, de sorte que les services Web RESTful 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, tels que les proxys de cache et même les caches de navigateur locaux. De plus, en utilisant la sémantique du Web, cela signifie que des choses comme les balises ETags et la compression zip automatique sont des moyens bien compris 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é un gars dont les tests montrent que REST est 4-6 fois plus rapide que SOAP et un autre papier favorisant également REST.

REST en tant que protocole ne définit aucune forme d’enveloppe de message, alors que SOAP dispose de cette norme.

Par conséquent, il est quelque peu simpliste d'essayer de comparer les deux, ce sont des pommes et des oranges.

Cela dit, une enveloppe SOAP (moins les données) ne représente que quelques k, il ne devrait donc y avoir aucune différence notable de vitesse si vous récupérez un objet sérialisé via SOAP et REST.

SOAP et tout autre protocole utilisant le langage XML alourdit généralement un peu vos messages. Cela peut poser problème ou non, selon le contexte.

Quelque chose comme JSON serait plus compact et peut-être plus rapide à sérialiser / désérialiser - mais ne l'utilisez pas exclusivement pour cette raison. Faites ce que vous pensez avoir du bon sens sur le moment et changez-le si c'est un problème.

Tout ce qui utilise généralement HTTP (à moins de réutiliser une connexion persistante HTTP 1.1, contrairement à de nombreuses implémentations) démarre une nouvelle connexion TCP pour chaque demande; c'est assez grave, surtout sur les liens à latence élevée. HTTPS est bien pire. Si vous avez beaucoup de demandes courtes d'un expéditeur à un destinataire, réfléchissez à la façon dont vous pouvez éliminer ce temps système.

L’utilisation de HTTP pour tout type de RPC (que ce soit SOAP ou autre) entraînera toujours des frais supplémentaires. Les autres protocoles RPC vous permettent généralement de garder une connexion ouverte.

Développement de " pjz " La réponse.

Si vous obtenez beaucoup d'opérations SOAP basées sur les informations (obtenez * type d'appels), vous ne pouvez actuellement pas les mettre en cache. Toutefois, si vous implémentiez ces mêmes opérations à l'aide de REST, il est possible que les données (en fonction du contexte de votre entreprise) puissent être mises en cache, comme indiqué ci-dessus. SOAP utilisant POST pour ses opérations, il ne peut pas mettre en cache les informations côté serveur.

SOAP est nettement plus lent. Les charges utiles sont considérablement plus grandes et sont plus lentes à assembler, transporter, analyser, valider et traiter.

Je ne connais pas de réponse à la question de l'analyse comparative, mais ce que je sais du format SOAP, c'est oui, il y a un temps système, mais ce temps système n'augmente pas à la demande: si vous avez un élément envoyé à En ce qui concerne le service Web, vous avez une surcharge de construction + un élément, et si vous avez 1000 éléments envoyés au service Web, vous avez une surcharge de 1000 éléments. La surcharge se produit lorsque la requête XML est formatée pour l'opération en question, mais chaque élément d'argument individuel de la requête est formaté de la même manière.

Si vous vous en tenez à de brèves rafales de données répétables (500 éléments, par exemple), la vitesse devrait être acceptable.

Je suppose que la question principale est de savoir comment comparer RPC avec SOAP.

ils utilisent tous deux la même approche d’abstraction de communication en utilisant des objets de bouts avec lesquels vous travaillez et des types de données primitives / complexes que vous récupérez sans savoir vraiment comment tout cela est géré en dessous.

Je préférerais toujours (JSON-) RPC car

  • c'est léger
  • il y a beaucoup de bonnes implémentations pour tous les langages de programmation
  • c'est simple d'apprendre / utiliser / créer
  • c'est rapide (surtout avec JSON)

bien qu'il y ait des raisons pour que vous utilisiez SOAP, c'est-à-dire si vous avez besoin de paramètres de nommage au lieu de vous fier à leur ordre correct

quelques détails supplémentaires que vous obtiendrez de cette pile de flux superposable question

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top