【问题标题】:Is Python good for writing standard, compatible and complete SOAP web services?Python 是否适合编写标准、兼容和完整的 SOAP Web 服务?
【发布时间】:2010-07-29 01:17:10
【问题描述】:

我使用了几个 python soap 库(SOAPpy、soaplib 和 SOAPpy 的 Twisted 包装器)来编写我的 soap Web 服务。

当我使用 python 客户端(SOAPpy.SOAPProxy 和 SUDS)时,我能够与我的 Web 服务进行通信(返回简单和复杂的类型对象)。

但是,当我尝试使用 C# ASP.net 时,我遇到了很多问题。我遇到了返回简单类型(int、string、double、boolean)的问题,并对 SOAPpy 库进行了一些破解。 但是,我仍在努力从 SOAPpy 返回 ComplexTypes。

我找不到任何完整、兼容的替代 python 库来编写我的 Web 服务。

主要问题:任何关于从 python 网络服务返回的 dot net 兼容复杂类型的建议/示例将不胜感激。

注意:我必须对 SOAPpy 进行相当多的破解才能使其首先工作。而且,如果是 SOAPpy,我必须手写 wsdl 文件。

【问题讨论】:

  • 我没试过,但你可能想看看pywebsvcs.sourceforge.net/zsi.html
  • 服务器返回什么数据?
  • @(James Black) zsi 与 SOAPpy 属于同一类库。但是,如果 zsi 中有更新版本的 SOAPpy,我会查看代码。 @(PirosB3) - 我的服务器在少数 api 函数中返回复杂类型(python 字典列表,例如 [{'field_1':'value1','field_2':'value2'},{'field_1':'value3', 'field_2':'value4'}]。
  • 我相信 SOAPpy 开发已被放弃,转而支持 ZSI;虽然,上次我看的时候,ZSI 的开发活动也不多。 suds 是我最近看到的唯一一个积极开发的 Python SOAP 库。
  • @mithrandi 据我所知,SOAPpy 代码已经转移到 ZSI。 SUDS 是很好的客户端库,它没有服务器实现支持。我最近在mail.python.org/mailman/listinfo/soap 加入了用于soap 的python 邮件列表,人们在那里讨论soaplib,他们知道soaplib 中的相互兼容性问题。

标签: c# python soap twisted


【解决方案1】:

在我个人看来,Python SOAP 库与其他平台的兼容性并不好。

我认为这里有两个问题:

  • 首先,Web 服务堆栈之间的 Web 服务兼容性是一种愿望,而不是现实。例如,查看this question 了解如何在 Java 和 WCF 之间使用 Web 服务。
  • 话虽如此,主要是编译时类型的 WSDL 的概念并不符合 Python 的原始哲学,因此投入较少。

我已经有一年多没有使用 Web 服务了,所以情况可能已经发生了变化。但建议与上一个问题相同:

  • 如果您使用一种以上的语言/库,请从编写 WSDL 开始。
  • 从另一个问题复制而来,“从 XSD 开始,但仅限于主流类型。基元、由基元组成的复杂类型、相同的数组。”
  • 最后我决定使用suds 用于Python web 客户端,在尝试了soappyzsi 之后。那是在使用基于 C 的库 (gsoap) 并从 Python 链接到它一段时间后。
  • 我对 Python 中的服务器实现从不满意,所以我曾经构建 Python 服务器并从另一个可以导出 SOAP 服务的库(在我的例子中是 Java 或 C,你可能会使用 C#)连接到它们。连接通常是一个更简单的协议。
  • 话虽如此,如果您从 WSDL 开始,使用soaplibzsi 可能会获得良好的结果。但恐怕几乎没有办法在检查兼容性的同时缓慢构建类型。

【讨论】:

  • 由于我的项目的一些技术复杂性,我必须只用 Python 编写我的 Web 服务。但是,客户可以来自任何语言。对于 python,SOAPpy.SOAPProxy 客户端工作正常,但我担心 c# 和 java。我已经手写了我的 wsdl 文件以确保我使用原始类型和由原始类型组成的复杂类型。但是,SOAPpy 返回列表如下: soapinterop.org/xsd" SOAP-ENC:root= "0" id="i3">.......你能告诉我来自 SOAPpy 的复杂类型返回示例并被 dot net 消费吗
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-06
  • 1970-01-01
  • 2019-06-25
  • 1970-01-01
相关资源
最近更新 更多