XML-RPC和SOAP有什么区别?

85

我从来没有真正理解为什么Web服务实现者会选择其中之一。XML-RPC通常在较旧的系统中使用吗?希望能有帮助理解这个问题的内容。

3个回答

92

有什么不同之处?

SOAP更强大,并且受到软件工具供应商的青睐(如MSFT .NET,Java Enterprise edition等)。

长期以来(2001-2007左右),SOAP被视为SOA的首选协议。 XML-RPC则不是。REST是新的SOA宠儿,尽管它不是协议。

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

某些较老的软件不支持SOAP。例如,我找不到经典ASP的SOAP库。

Python中不太支持SOAP。XML-RPC在标准库中得到了很好的支持。

SOAP支持文档级传输,而xml-rpc更多地是关于值的传输,尽管它可以传输结构,例如结构体、列表等。

XML-RPC主要用于程序对程序的语言无关传输。它主要通过http / https进行传输。SOAP消息也可以通过电子邮件传输。

xml-rpc更适合Unix系统。使用终端文本编辑器时,可以简单地完成任务,并快速部署高质量的Web服务。使用这种方式进行SOAP是一种动物园;你需要一个好的IDE才能使其可行。

如果您正在争取财富500强IT工作,了解SOAP会让您的简历看起来更好。

XML-RPC在非ASCII字符集方面存在一些问题。

XML-RPC不支持命名参数。它们必须按正确顺序排列。不确定SOAP是否支持,但认为是这样。


1
对于使用Python进行SOAP编程,有ZSI包。它相当不错,但您绝对需要一个wsdl文件。 - edomaur
2
我相信旧的SOAP工具包支持“Classic ASP”。更重要的是,您可以使用您喜爱的.NET语言创建一个COM组件,该组件包装了服务引用,使得Classic ASP甚至可以使用现代Web服务。 - John Saunders
1
@edomaur 实际上,suds 是更好的选择,因为它更符合 Python 的风格,更直接和易于使用。http://pypi.python.org/pypi/suds - ccpizza

14

除了其他答案外,我还建议您查看使用Ethereal捕获的SOAP和XML-RPC调用的实际文本表示。整个“XML-RPC更简单”的论点在您看到SOAP调用有多么冗长之前并没有太多意义。许多相当受欢迎的网站由于SOAP API需要消耗大量带宽而避免使用SOAP,如果人们开始广泛使用它,这将是一个问题。


7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接