Яка різниця між XML-RPC та SOAP?


81

Я ніколи по-справжньому не розумію, чому реалізатор веб-сервісу вибирає одне перед іншим. Чи зазвичай XML-RPC зустрічається у старих системах? Будемо дуже вдячні за будь-яку допомогу в розумінні цього.

Відповіді:


88

Відмінності?

SOAP є потужнішим і набагато кращий у постачальників програмних засобів (MSFT .NET, Java Enterprise Edition, подібні речі).

SOAP тривалий час (2001-2007 рр.) Розглядався як протокол вибору SOA. xml-rpc не так вже й багато. REST - це новий улюбленець SOA, хоча це не протокол.

SOAP є більш багатослівним, але більш здібним.

SOAP не підтримується у деяких старих файлах. Наприклад, відсутні класифікатори SOAP для класичного ASP (які я міг знайти).

SOAP погано підтримується в python. XML-RPC має велику підтримку в python, у стандартній бібліотеці.

SOAP підтримує передачу на рівні документа, тоді як xml-rpc більше стосується передачі значень, хоча він може передавати такі структури, як структури, списки тощо.

xm-rpc - це насправді програма для програмування агностичної передачі мови. В основному це стосується http / https. SOAP-повідомлення також можуть надходити через електронну пошту.

xml-rpc є більш уніфікованим. Це дозволяє робити все просто, і коли ви знаєте, що робите, дуже швидко розгортаєте якісні веб-служби, навіть використовуючи текстові редактори терміналів. Робити SOAP таким чином - це зоопарк; Вам дійсно потрібна хороша IDE, щоб зробити це здійсненним.

Знання SOAP, однак, буде виглядати набагато краще у вашому резюме / резюме, якщо ви претендуєте на роботу в галузі ІТ в Fortune 500.

xml-rpc має деякі проблеми з не-ascii наборами символів.

XML-RPC не підтримує іменовані параметри. Вони повинні бути в правильному порядку. Не впевнений щодо SOAP, але думайте так.


1
Для SOAP з Python існує пакет ZSI. Це цілком непогано, але вам абсолютно потрібен wsdl.
edomaur

2
Я вважаю, що старий набір SOAP-інструментів підтримував "класичний ASP". Більш того, можна використовувати вашу улюблену мову .NET, щоб створити COM-компонент, який обгортає посилання на послуги, що дозволяє класичному ASP використовувати навіть сучасну веб-службу.
Джон Сондерс,

1
@edomaur Насправді піна є кращим вибором, оскільки вона більш пітонічна, простіша та простіша у використанні pypi.python.org/pypi/suds
ccpizza

14

Щоб лише додати до інших відповідей, я б закликав вас поглянути на фактичні текстові подання викликів SOAP та XML-RPC, можливо, захопивши один із Ethereal. У цілому аргумент "XML-RPC простіший" не має сенсу, поки ви не побачите, наскільки неймовірно багатослівним є виклик SOAP. Багато досить популярних веб-сайтів ухиляються від SOAP, оскільки їх API залежить лише від величини пропускної здатності, яку він споживав би, якщо люди почали широко використовувати його.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.