谁能解释一下XMLRPC、SOAP和C# Web服务之间的区别?

3 投票
4 回答
2312 浏览
提问于 2025-04-15 16:41

它们是同一种协议还是有什么不同呢?我有点搞不清楚。

其实,我想用Python来调用一个用C#和ASP.NET写的网络服务。我试过用XMLRPC,但好像没成功。

那么它们之间到底有什么实际的区别呢?谢谢。

4 个回答

3

它们是完全不同的协议,你需要弄清楚你想使用的网络服务所用的协议,然后根据这个协议进行编程。网络服务其实只是一个概念,XML-RPC、SOAP和REST是实现这个概念的具体技术。这些实现方式不能直接互通(除非有一些翻译层)。

这些协议基本上都能实现类似的功能,就是通过网络调用远程的某个应用。不过,它们实现这个功能的细节是不同的,它们并不是同一种协议的不同名称。

4

如果你想调用用C#写的网络服务,你需要一个可以处理SOAP的库,这个库能够读取WSDL文件(建议你看看这个文件,里面有很多有用的术语)。我遇到过几个这样的库:

  • suds 是一个轻量级的SOAP Python客户端。
  • ZSI 是一个功能更强大的库,它也能处理复杂类型的WSDL。
  • SOAPpy 是一个不错的库。不过不幸的是,它自2005年2月22日以来就没有更新了,所以我这里只是提供它作为参考。

Python的网络服务页面上有更多信息和相关库的链接。

5

它们都使用相同的传输协议(HTTP)。

XMLRPC 是用 XML 格式化的传统远程过程调用,方便远程执行。

SOAP 则把调用包裹在一个 SOAP 信封里(仍然是 XML,只是格式不同,更倾向于基于消息的服务,而不是传统的远程过程调用)。

如果你在用 C#,那么你最好的选择可能是基于 SOAP 的 Web 服务(至少在你列出的选项中是这样)。

撰写回答