web-dev-qa-db-fra.com

Quelle est la différence entre XML-RPC et SOAP?

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 anciens systèmes? Toute aide pour comprendre cela serait grandement appréciée.

76
Scott Saad

Différences?

SOAP est plus puissant et est très apprécié par les fournisseurs d'outils logiciels (MSFT .NET, Java Enterprise edition, ce genre de choses).

SOAP a longtemps été considéré (2001-2007) comme le protocole de choix pour SOA. xml-rpc pas tellement. REST est le nouveau SOA chéri, bien que ce ne soit pas un protocole).

SOAP est plus verbeux, mais plus performant.

SOAP n'est pas pris en charge dans certains des éléments les plus anciens. Par exemple, aucune SOAP libs for classic ASP (que j'ai pu trouver).

SOAP n'est pas bien pris en charge en python. XML-RPC a un grand support en python, dans la bibliothèque standard.

SOAP prend en charge le transfert au niveau du document, tandis que xml-rpc concerne davantage le transfert de valeurs, bien qu'il puisse transférer des structures telles que des structures, des listes, etc.

xm-rpc concerne vraiment le transfert agnostique de programme à programme. Il passe principalement par http/https. SOAP peuvent également être envoyés par e-mail.

xml-rpc est plus unixy. Il vous permet de faire les choses simplement et lorsque vous savez ce que vous faites, il est très rapide de déployer des services Web de qualité, même lorsque vous utilisez 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 possible).

Connaître SOAP, cependant, sera beaucoup mieux sur votre curriculum vitae/CV si vous êtes en lice pour un emploi informatique Fortune 500.

xml-rpc a quelques problèmes avec les jeux de caractères non ascii.

XML-RPC ne prend pas en charge les paramètres nommés. Ils doivent être dans le bon ordre. Pas sûr de SOAP, mais pensez-le.

84
Christopher Mahan

Juste pour ajouter aux autres réponses, je vous encourage à regarder les représentations textuelles réelles des SOAP et appels XML-RPC, peut-être en en capturant une avec Ethereal. Le tout, "XML-RPC est l'argument "plus simple" n'a pas beaucoup de sens tant que vous ne voyez pas à quel point un appel SOAP est incroyablement verbeux. La plupart des sites Web assez populaires hésitent à SOAP = comme leur API en raison de la quantité de bande passante qu'elle consommerait si les gens commençaient à l'utiliser intensivement.

13
bmdhacks

Kate Rhodes a un excellent essai sur les différences à http://weblog.masukomi.org/2006/11/21/xml-rpc-vs-soap

5
Dexter