Stworzyłem schemat jako uzgodniony interfejs między naszą firmą a zewnętrzną firmą. Teraz tworzę usługę WWW WCF C# do obsługi interfejsu.xsd.exe - schemat do klasy - do użytku z WCF
Uruchomiłem narzędzie XSD i utworzyłem klasę C#. Schemat został zbudowany w BizTalk i odwołuje się do innych schematów, więc generuje się ponad 15 klas.
Umieszczam atrybut [DataContract} przed każdą z klas. Czy muszę umieścić atrybut [DataMember] na każdej nieruchomości?
Kiedy generuję program klienta testowego, proxy nie ma żadnego kodu dla żadnej z tych 15 klas.
Używaliśmy tej techniki podczas korzystania z usług .asmx, ale nie jesteśmy pewni, czy będzie działać tak samo z WCF. Jeśli zmienimy schemat, chcielibyśmy zregenerować klasę WCF, a następnie będziemy musieli za każdym razem redefiniować ją przy pomocy wszystkich atrybutów [DataMember]? Czy istnieje nowsze narzędzie podobne do XSD.exe, które będzie działało lepiej z WCF?
Dzięki
Neal Walters
ROZWIĄZANIE (pochowany w jednym z Saunders odpowiedzi/komentarze):
Dodaj XmlSerializerFormat definicji interfejsu:
[OperationContract]
[XmlSerializerFormat] // ADD THIS LINE
Transaction SubmitTransaction(Transaction transactionIn);
Two Notatki: 1) Po tym zrobiłem, widziałem dużo więcej .xsds w moim proxy (Se rvice Reference) program klienta testowego, ale nie widziałem nowych klas w mojej intellisense. 2) Z jakiegoś powodu, dopóki nie zrobiłem kompilacji na projekcie, nie dostałem wszystkich klas w intellisense (nie wiem dlaczego).
1) Kiedy wygenerować program kliencki testy, pełnomocnik nie posiada żadnego kodu dla każdego z tych 15 klas. Rozumiem, że WCF wymaga, aby [DataContract] i [DataMember] były odpowiednio eksponowane. Wszystkie elementy są ze mną w porządku. 2) Całkowicie zgadzam się, że nie chcę zmienić kodu, dlatego wysłałem pytanie. 3) Czego należy szukać, aby dowiedzieć się więcej o XmlSerializer? Czy generuje kod C# z plików .xsd? Mogłem go używać na ostatnim kliencie, ale muszę mieć dostęp do mojego konta Gmail (tutaj zablokowane). – NealWalters
Użyj [XmlSerializerFormat] w każdej operacji usługi sieci Web, która wymaga szeregowania XML. Narzędzie XSD wykonało już dla ciebie wszystkie pozostałe zadania. –
@Dvvoter: powód upadku? –