关于Web服务:XML-RPC和SOAP有什么区别?

关于Web服务:XML-RPC和SOAP有什么区别?

What's the difference between XML-RPC and SOAP?

我从来没有真正理解过为什么Web服务实现者会选择一个。 XML-RPC通常在较旧的系统中找到吗? 任何帮助理解这一点将不胜感激。


差异?

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

SOAP长期以来(2001-2007年)一直被视为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,但请这样考虑。


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


凯特·罗德斯(Kate Rhodes)在http://weblog.masukomi.org/2006/11/21/xml-rpc-vs-soap上发表了一篇关于差异的出色文章


推荐阅读