Was ist der Unterschied zwischen XML-RPC und SOAP?


81

Ich habe nie wirklich verstanden, warum ein Webdienst-Implementierer einen über den anderen wählen würde. Wird XML-RPC im Allgemeinen in älteren Systemen gefunden? Jede Hilfe zum Verständnis wäre sehr dankbar.

Antworten:


88

Unterschiede?

SOAP ist leistungsfähiger und wird von Anbietern von Softwaretools (MSFT .NET, Java Enterprise Edition usw.) sehr bevorzugt.

SOAP wurde lange Zeit (2001-2007) als das Protokoll der Wahl für SOA angesehen. xml-rpc nicht so sehr. REST ist der neue SOA-Liebling, obwohl es kein Protokoll ist.

SOAP ist ausführlicher, aber leistungsfähiger.

SOAP wird in einigen älteren Versionen nicht unterstützt. Zum Beispiel keine SOAP-Bibliotheken für klassisches ASP (die ich finden konnte).

SOAP wird in Python nicht gut unterstützt. XML-RPC bietet in Python in der Standardbibliothek hervorragende Unterstützung.

SOAP unterstützt die Übertragung auf Dokumentebene, während sich xml-rpc eher mit der Übertragung von Werten befasst, obwohl es Strukturen wie Strukturen, Listen usw. übertragen kann.

Bei xm-rpc geht es wirklich um programmunabhängige Übertragung von Programm zu Programmsprache. Es geht hauptsächlich über http / https. SOAP-Nachrichten können auch über E-Mails gesendet werden.

xml-rpc ist unixy. Sie können damit Dinge einfach erledigen, und wenn Sie wissen, was Sie tun, können Sie sehr schnell hochwertige Webdienste bereitstellen, selbst wenn Sie Terminal-Texteditoren verwenden. SoAP zu machen ist ein Zoo; Sie brauchen wirklich eine gute IDE, um dies möglich zu machen.

Wenn Sie sich jedoch für einen Fortune 500-IT-Job bewerben, sieht es in Ihrem Lebenslauf viel besser aus, wenn Sie SOAP kennen.

xml-rpc hat einige Probleme mit Nicht-ASCII-Zeichensätzen.

XML-RPC unterstützt keine benannten Parameter. Sie müssen in der richtigen Reihenfolge sein. Ich bin mir bei SOAP nicht sicher, aber ich denke schon.


1
Für SOAP mit Python gibt es das ZSI-Paket. Es ist ziemlich gut, aber Sie brauchen unbedingt eine WSDL.
Edomaur

2
Ich glaube, das alte SOAP Toolkit hat "Classic ASP" unterstützt. Genauer gesagt, Sie können Ihre bevorzugte .NET-Sprache verwenden, um eine COM-Komponente zu erstellen, die eine Dienstreferenz umschließt, sodass Classic ASP sogar einen modernen Webdienst nutzen kann.
John Saunders

1
@edomaur Tatsächlich ist Schaum eine bessere Wahl, da er pythonischer, unkomplizierter und einfacher zu verwenden ist. Pypi.python.org/pypi/suds
ccpizza

14

Um die anderen Antworten zu ergänzen, möchte ich Sie ermutigen, sich die tatsächlichen Textdarstellungen von SOAP- und XML-RPC-Aufrufen anzusehen, indem Sie möglicherweise eine mit Ethereal erfassen. Das ganze Argument "XML-RPC ist einfacher" macht erst dann Sinn, wenn Sie sehen, wie unglaublich ausführlich ein SOAP-Aufruf ist. Viele der recht beliebten Websites scheuen SOAP als API, da nur die Bandbreite verbraucht wird, wenn die Benutzer es ausgiebig nutzen.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.