XML-RPC和SOAP有什么区别?


Answers:


88

差异?

SOAP功能更强大,并且是软件工具供应商(MSFT .NET,Java Enterprise Edition之类的东西)更喜欢的。

SOAP长期以来(2001-2007ish)被视为SOA的首选协议。xml-rpc没那么多。REST是新的SOA宠儿,尽管它不是协议。

SOAP更冗长,但功能更强大。

在某些较旧的版本中不支持SOAP。例如,没有用于经典ASP的SOAP库(我可以找到)。

python不太支持SOAP。XML-RPC在标准库中的python中提供了强大的支持。

SOAP支持文档级传输,而xml-rpc则更多地涉及值传输,尽管它可以传输诸如结构,列表等结构。

xm-rpc实际上是关于程序到程序语言不可知转移的。它主要经过http / https。SOAP消息也可以通过电子邮件传递。

xml-rpc更统一。它使您可以简单地做事,并且在知道自己在做什么时,即使使用终端文本编辑器,也可以快速部署高质量的Web服务。那样做SOAP是一个动物园。您确实需要一个好的IDE使其可行。

但是,如果您要竞争《财富》 500强IT职位,那么对SOAP的了解会更好。

xml-rpc对于非ascii字符集存在一些问题。

XML-RPC不支持命名参数。它们必须顺序正确。不确定SOAP,但请这样考虑。


1
对于使用Python的SOAP,有ZSI包。这是相当不错的,但是您绝对需要一个wsdl。
edomaur

2
我相信旧的SOAP工具包支持“经典​​ASP”。更重要的是,您可以使用自己喜欢的.NET语言创建一个包装服务引用的COM组件,从而使Classic ASP甚至可以使用现代Web服务。
约翰·桑德斯

1
@edomaur实际上suds是一个更好的选择,因为它更具Python风格,更直接,更易于使用pypi.python.org/pypi/suds
ccpizza 2012年

14

只是为了增加其他答案,我鼓励您查看SOAP和XML-RPC调用的实际文本表示形式,也许可以通过使用Ethereal来捕获它们。整个“ XML-RPC更简单”参数没有多大意义,直到您看到SOAP调用的详细程度令人难以置信。许多相当流行的网站都避开了SOAP作为其API,因为如果人们开始大量使用它,就会消耗大量带宽。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.