ChatGPT解决这个技术问题 Extra ChatGPT

XML-RPC 和 SOAP 有什么区别?

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


R
Robert Harvey

差异?

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 会在您的简历/CV 上看起来更好。

xml-rpc 在非 ascii 字符集方面存在一些问题。

XML-RPC 不支持命名参数。它们的顺序必须正确。不确定 SOAP,但可以这么想。


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

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


C
Christopher Mahan

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