XML-RPC 和 SOAP 有啥区别?

Posted

技术标签:

【中文标题】XML-RPC 和 SOAP 有啥区别?【英文标题】:What's the difference between XML-RPC and SOAP?XML-RPC 和 SOAP 有什么区别? 【发布时间】:2010-09-09 22:56:19 【问题描述】:

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

【问题讨论】:

【参考方案1】:

Kate Rhodes 在http://weblog.masukomi.org/2006/11/21/xml-rpc-vs-soap 上有一篇关于差异的精彩文章

【讨论】:

【参考方案2】:

只是为了补充其他答案,我鼓励您查看 SOAP 和 XML-RPC 调用的实际文本表示,也许通过使用 Ethereal 捕获一个。除非您看到 SOAP 调用非常冗长,否则整个“XML-RPC 更简单”的论点没有多大意义。许多相当流行的网站都回避 SOAP 作为他们的 API,因为如果人们开始广泛使用它会消耗大量带宽。

【讨论】:

【参考方案3】:

区别?

SOAP 功能更强大,受到软件工具供应商(MSFT .NET、Java 企业版等)的青睐。

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

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

一些旧的东西不支持 SOAP。例如,没有经典 ASP 的 SOAP 库(我能找到)。

SOAP 在 python 中没有得到很好的支持。 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,但可以这么想。

【讨论】:

对于带有 Python 的 SOAP,有 ZSI 包。这很好,但你绝对需要一个 wsdl。 我相信旧的 SOAP 工具包支持“经典​​ ASP”。更重要的是,可以使用您最喜欢的 .NET 语言创建一个包装服务引用的 COM 组件,从而允许经典 ASP 甚至使用现代 Web 服务。 @edomaur 实际上 suds 是一个更好的选择,因为它更 Python、更直接、更易于使用 pypi.python.org/pypi/suds

以上是关于XML-RPC 和 SOAP 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Android 的 SOAP 1.1、SOAP 1.2、HTTP GET 和 HTTP POST 方法有啥区别?

soap协议和普通的post请求有啥区别呢

JMeter-SOAP/XML-RPC协议的接口测试

三种主流的WebService实现方案(REST/SOAP/XML-RPC)简述及比较

三种主流的WebService实现方案(REST/SOAP/XML-RPC)简述及比较

jmeter的webservice接口测试(SOAP/XML-RPC Request)