2010-02-25 9 views
15

Mam pytanie dotyczące różnych sposobów dziedziczenia są reprezentowane między WCF i SUDS (Python). Mam serwer C++/CLI WCF (.NET 3.5 SP1) i próbuję się z nim komunikować. Użyłem klienta C# (WCF także) i działa dobrze, ale występują problemy podczas korzystania z klienta SUDS (Python 2.6.4, SUDS 0.3.8). Jest to w większości w porządku, ale w przypadku dziedziczonych typów, a różnica wydaje się być taka, jak te dwie reprezentują dziedziczenie w pliku XML protokołu SOAP. Kiedy patrzę na wiadomości, które logi serwera, uzyskać wyniki podobne do poniższego:Różnice XML między WCD i Python SUDS dla dziedziczenia?

C# Client:

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

Python Klient:

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

Czy jest możliwe, aby zmienić WCF serwer do zaakceptowania stylu Python? Lub zmienić klienta Python SUDS, aby wysłać styl WCF? Który jest prawidłowy?

+1

Czy możesz dodać więcej próbki kodu? – Daenyth

+0

+1 ten temat. Mieliśmy problemy z integracją z serwerami SOAP opracowanymi również w .net. – Eduardo

Odpowiedz

1

Nie wiem o stronie Pythona, ale istnieje kilka opcji po stronie WCF. Bardziej prostą opcją jest stworzenie message inspector do wykrywania i przekształcania generowanego przez Pythona mydła na coś bardziej przyjemnego dla usługi WCF.

Trudniejszą, ale "czystszą" opcją jest określenie sposobu kształtowania WSDL generowanego przez usługę WCF, aby umożliwić klientowi Pythona wytwarzanie wspomnianego smacznego mydła. Po znalezieniu wymaganych poprawek należy użyć wartości the MessageContract classes zamiast DataContract, aby usługa wygenerowała zmodyfikowany plik WSDL. Klienci .NET powinni obsługiwać ten zmodyfikowany WSDL bez zażalenia.

Powiązane problemy