2010-02-25 20 views
15

WCF ve SUDS (Python) arasında mirasın farklı şekillerde temsil edilmesine ilişkin bir sorum var. C++/CLI WCF sunucum (.NET 3.5 SP1) var ve onunla iletişim kurmaya çalışıyorum. C# (WCF de) istemcisi kullandım ve iyi çalışıyor, ancak SUDS istemcisini kullanırken sorun var (Python 2.6.4, SUDS 0.3.8). Çoğunlukla iyi, ama kalıtsal tipler için, ve fark, SOAP XML'indeki mirasın temsil ediliş biçiminde olduğu gibi görünüyor.Miras için WCF ve Python SUDS arasındaki XML farklılıkları?

C# Client: Ben sunucu günlükleri, şuna benzer sonuçlar elde mesajlar baktığımızda

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

Python Müşteri:

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

o WCF değiştirmek mümkün mü sunucu Python stilini kabul edecek mi? Veya WCF stilini göndermek için Python SUDS istemcisini değiştirmek için? Hangisi doğru?

+1

Daha fazla kod örneği gönderir misiniz? Bu konuya – Daenyth

+0

+1. .net'de geliştirilen SOAP sunucuları ile entegre olarak sorun yaşıyoruz. – Eduardo

cevap

1

Python tarafı hakkında bir şey bilmiyorsunuz, ancak WCF tarafında birkaç seçenek var. Python tarafından üretilen sabunun WCF servisine daha uygun bir şekilde algılanması ve dönüştürülmesi için daha düz ayar seçeneği message inspector oluşturmaktır.

Daha zor ama "daha saf" seçeneği, WCF servisi tarafından üretilen WSDL'nin nasıl şekillendirileceğini belirlemek, böylece python istemcisinin yukarıda belirtilen lezzetli sabun üretmesine izin vermesidir. Gerekli tweaks'i bulduğunuzda, hizmetin tweaked WSDL'yi üretmesini sağlamak için DataContract yerine the MessageContract classes kullanırsınız. .NET istemcileri bu düzeltilmiş WSDL'yi şikayette bulunmadan işlemelidir.

İlgili konular