2008-09-17 8 views
67

Je n'ai jamais vraiment compris pourquoi un implémenteur de service Web choisirait l'un plutôt que l'autre. XML-RPC est-il généralement trouvé dans les systèmes plus anciens? Toute aide pour comprendre cela serait grandement appréciée.Quelle est la différence entre XML-RPC et SOAP?

Répondre

74

Différences?

La spécification xml-rpc correspond à 1 page 6 pages. La spécification SOAP 1.2 vous coûtera une rame de 500 pages 44 pages.

SOAP est plus puissant, et est beaucoup préféré par les fournisseurs d'outils logiciels (MSFT .NET, Java Enterprise Edition, ce genre de choses).

SOAP a été pendant longtemps (2001-2007) considéré comme le protocole de choix pour SOA. xml-rpc pas tellement. REST est le nouveau chouchou de la SOA, bien qu'il ne s'agisse pas d'un protocole. SOAP est plus verbeux, mais plus capable.

SOAP n'est pas pris en charge dans certains composants plus anciens. Par exemple, aucune librairie SOAP pour ASP classique (que j'ai pu trouver).

SOAP n'est pas bien supporté en python. XML-RPC a un très bon support en python, dans la bibliothèque standard.

SOAP prend en charge le transfert au niveau du document, alors que xml-rpc est plus sur le transfert de valeurs, même si elle peut transférer des structures telles que les structures, listes, etc.

XM-rpc est vraiment un programme à transfert linguistique agnostique . Il va principalement sur http/https. Les messages SOAP peuvent également être envoyés par e-mail.

xml-rpc est plus unixy. Il vous permet de faire les choses simplement, et quand vous savez ce que vous faites, il est très rapide de déployer des services Web de qualité, même en utilisant des éditeurs de texte de terminal. Faire SOAP de cette façon est un zoo; Vous avez vraiment besoin d'un bon IDE pour le rendre réalisable. Connaître SOAP, cependant, sera beaucoup mieux sur votre curriculum vitae/CV si vous êtes en concurrence pour un emploi informatique Fortune 500. Xml-rpc a quelques problèmes avec les jeux de caractères non-ascii.

Édité: Je voulais juste ajouter que XML-RPC ne supporte pas les paramètres nommés. Ils doivent être dans le bon ordre. Pas sûr à propos de SOAP, mais pensez-y.

+1

Pour SOAP avec Python, il y a le package ZSI. C'est assez bon, mais vous avez absolument besoin d'un wsdl. – edomaur

+1

Je crois que l'ancien SOAP Toolkit avait un support pour "ASP classique". Plus précisément, vous pouvez utiliser votre langage .NET favori pour créer un composant COM qui enveloppe une référence de service, permettant à ASP classique de consommer même un service Web moderne. –

+0

@ Mark Harrison et Christopher: Que voulez-vous dire "Faire SOAP de cette façon est un zoo" .Désolé, je ne pouvais pas comprendre le mot "zoo" .Veuillez le décrire ... – Saravanan

11

Juste pour ajouter aux autres réponses, je vous encourage à regarder les représentations textuelles réelles des appels SOAP et XML-RPC, peut-être en capturant un avec Éthéré. L'argument "XML-RPC est plus simple" n'a pas beaucoup de sens jusqu'à ce que vous voyiez à quel point un appel SOAP est incroyablement verbeux. La plupart des sites Web assez populaires ne font pas confiance à SOAP en raison de la quantité de bande passante qu'ils consommeraient si les gens commençaient à l'utiliser intensivement.

Questions connexes