Python是否适合编写标准,兼容和完整的SOAP Web服务?

时间:2010-07-29 01:17:11

标签: c# python soap twisted

我使用了一些python soap库( SOAPpy,soaplib和SOAPpy的Twisted包装)来编写我的soap web服务。

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

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

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

主要问题:非常感谢来自python web服务的dot net兼容复杂类型返回的任何建议/示例。

注意:我不得不破解SOAPpy以使它在第一时间工作。并且,我必须在SOAPpy的情况下手写wsdl文件。

1 个答案:

答案 0 :(得分:1)

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

我认为这里有两个问题:

  • 首先,Web服务堆栈中Web服务的兼容性是一种愿望,而不是现实。例如,查看this question以了解如何在Java和WCF之间使用Web服务。
  • 话虽如此,WSDL的概念在很大程度上是编译时间的输入并不符合Python的原始理念,因此投入的努力较少。

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

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