【问题标题】:XML differences between WCF and Python SUDS for inheritance?WCF 和 Python SUDS 之间用于继承的 XML 差异?
【发布时间】:2010-02-25 14:54:17
【问题描述】:

我有一个关于 WCF 和 SUDS (Python) 之间表示继承的不同方式的问题。我有一个 C++/CLI WCF 服务器(.NET 3.5 SP1),我正在尝试与之通信。我使用了 C#(也包括 WCF)客户端,它工作正常,但使用 SUDS 客户端(Python 2.6.4、SUDS 0.3.8)时出现问题。大部分都很好,但是对于继承的类型,区别似乎在于两者在 SOAP XML 中表示继承的方式。当我查看服务器记录的消息时,我得到类似于以下的结果:

C# 客户端:

<ns:DerivedType>
...
</ns:DerivedType>

Python 客户端:

<ns:BaseType xsi:type="ns:DerivedType">
...
</ns:BaseType>

是否可以将 WCF 服务器更改为接受 Python 样式?或者更改 Python SUDS 客户端以发送 WCF 样式?哪一个是正确的?

【问题讨论】:

  • 你能发布更多的代码示例吗?
  • +1 这个话题。我们在与 .net 开发的 SOAP 服务器集成时也遇到了问题。

标签: python wcf inheritance soap suds


【解决方案1】:

不了解 python 方面,但 WCF 方面有几个选项。更直接的选择是创建一个message inspector 来检测python 生成的soap 并将其转换为更适合WCF 服务的东西。

更困难但“更纯粹”的选项是确定如何塑造由 WCF 服务生成的 WSDL,以便它允许 python 客户端生成上述可口的肥皂。一旦找到所需的调整,您将使用the MessageContract classes 代替 DataContract 以使服务生成调整后的 WSDL。 .NET 客户端应该毫无怨言地处理这个经过调整的 WSDL。

【讨论】:

    【解决方案2】:

    您可以使用数据协定序列化程序来控制如何创建和读取 xml。见:http://msdn.microsoft.com/en-us/library/ms731073.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 2011-06-04
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      • 2020-11-30
      相关资源
      最近更新 更多