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.

Scott Saad
quelle

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.

Christopher Mahan
quelle
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.

bmdhacks
quelle