WCF和Python SUDS之间的XML差异用于继承?

时间:2010-02-25 14:54:18

标签: python wcf inheritance soap suds

我有一个关于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样式?哪一个是正确的?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

相关问题