Udostępnij przez


Dokumentacja usługi ServiceDescription i WSDL

W tym temacie opisano, jak program Windows Communication Foundation (WCF) mapuje dokumenty języka opisu usług sieci Web (WSDL) do i z ServiceDescription wystąpień.

Jak usługa ServiceDescription mapuje na WSDL 1.1

Za pomocą platformy WCF można wyeksportować dokumenty WSDL z instancji ServiceDescription dla Twojej usługi. Dokumenty WSDL są generowane automatycznie dla usługi podczas publikowania punktów końcowych metadanych.

Możesz również importować wystąpienia ServiceEndpoint, ContractDescription i Binding z dokumentów WSDL za pomocą typu WsdlImporter.

Dokumenty WSDL, wyeksportowane przez WCF, zaimportują definicje schematu XML wykorzystywane z zewnętrznych dokumentów schematu XML. Oddzielny dokument schematu XML jest eksportowany dla każdej docelowej przestrzeni nazw, z której korzystają typy danych w usłudze. Podobnie oddzielny dokument WSDL jest eksportowany dla każdej docelowej przestrzeni nazw używanej przez kontrakty usług.

Opis usługi

ServiceDescription Wystąpienie mapuje się na element wsdl:service. Instancja ServiceDescription zawiera kolekcję instancji ServiceEndpoint, które mapują na poszczególne elementy wsdl:port.

Właściwości Mapowanie WSDL
Name Wartość wsdl:service/@name dla usługi.
Namespace Określenie targetNamespace dla definicji wsdl:service usługi.
Endpoints Definicje usługi wsdl:port.

Punkt końcowy usługi

ServiceEndpoint Wystąpienie mapuje się na element wsdl:port. Wystąpienie ServiceEndpoint zawiera adres, powiązanie i kontrakt.

Zachowania interfejsu IWsdlExportExtension, które są implementowane przez punkty końcowe, mogą modyfikować element wsdl:port dla punktu końcowego, do którego są dołączone.

Właściwości Mapowanie WSDL
Name Wartość wsdl:port/@name dla punktu końcowego i wartość wsdl:binding/@name dla wiązania punktu końcowego.
Address Adres dla definicji wsdl:port punktu końcowego.

Transport dla punktu końcowego określa format adresu. Na przykład w przypadku transportu obsługiwanego przez program WCF może to być adres SOAP lub odwołanie do punktu końcowego.
Binding Definicja wsdl:binding punktu końcowego.

W przeciwieństwie do definicji wsdl:binding, powiązania w WCF nie są przypisane do żadnego konkretnego kontraktu.
Contract Definicja wsdl:portType punktu końcowego.
Behaviors Zachowania punktów końcowych, które implementują interfejs IWsdlExportExtension, mogą modyfikować wsdl:port dla punktu końcowego.

Powiązania

Instancja powiązania dla wystąpienia ServiceEndpoint mapuje się na definicję wsdl:binding. W przeciwieństwie do wsdl:binding definicji, które muszą być skojarzone z określoną wsdl:portType definicją, powiązania WCF są niezależne od dowolnego kontraktu.

Wiązanie składa się ze zbioru elementów wiązania. Każdy element opisuje pewien aspekt sposobu komunikowania się punktu końcowego z klientami. Ponadto powiązanie ma MessageVersion, który wskazuje EnvelopeVersion oraz AddressingVersion punktu końcowego.

Właściwości Mapowanie WSDL
Name Używana w domyślnej nazwie punktu końcowego, która jest nazwą powiązania z nazwą kontraktu dołączoną przez podkreślenie.
Namespace targetNamespace dla definicji wsdl:binding.

Podczas importu, jeśli do portu WSDL dołączona jest polityka, zaimportowana przestrzeń nazw powiązania jest odwzorowywana na targetNamespace dla definicji wsdl:port.
BindingElementCollection, zwracana przez metodę CreateBindingElements() "Rozszerzenia specyficzne dla domeny, zwykle zastrzeżenia polityki, do definicji wsdl:binding."
MessageVersion Parametry EnvelopeVersion i AddressingVersion dla punktu końcowego.

Gdy MessageVersion.None jest określone, powiązanie WSDL nie zawiera wiązania SOAP, a port WSDL nie zawiera zawartości WS-Addressing. To ustawienie jest zwykle używane dla zwykłych starych punktów końcowych XML (POX).

Elementy wiążące

Elementy powiązania dla powiązania punktu końcowego są mapowane na różne rozszerzenia WSDL w obiekcie wsdl:binding, takie jak deklaracje polityki.

Dla TransportBindingElement powiązania określa transport Uniform Resource Identifier (URI) dla powiązania protokołu SOAP.

AdresowanieWersja

Element AddressingVersion on a binding mapuje wersję adresowania używanego w pliku wsd:port. WCF obsługuje adresy SOAP 1.1 i SOAP 1.2 oraz referencje punktów końcowych WS-Addressing 08/2004 i WS-Addressing 1.0.

KopertaWersja

Element EnvelopeVersion na wiązaniu odpowiada wersji protokołu SOAP używanej w wsdl:binding. WCF obsługuje powiązania protokołu SOAP 1.1 i SOAP 1.2.

Kontrakty

Instancja ContractDescription dla instancji ServiceEndpoint odpowiada elementowi wsdl:portType. Wystąpienie ContractDescription opisuje wszystkie operacje dla danego kontraktu.

Właściwości Mapowanie WSDL
Name Wartość wsdl:portType/@name dla kontraktu.
Namespace targetNamespace dla definicji wsdl:portType.
SessionMode Wartość wsdl:portType/@msc:usingSession dla kontraktu. Ten atrybut jest rozszerzeniem WCF dla WSDL 1.1.
Operations Definicje wsdl:operation kontraktu.

Operacji

Wystąpienie OperationDescription mapuje na wsdl:portType/wsdl:operationelement . Obiekt OperationDescription zawiera kolekcję MessageDescription wystąpień, które opisują komunikaty dotyczące operacji.

Dwa zachowania operacji mają duży wpływ na sposób mapowania elementu OperationDescription do dokumentu WSDL: DataContractSerializerOperationBehavior i XmlSerializerOperationBehavior.

Właściwości Mapowanie WSDL
Name wartość wsdl:portType/wsdl:operation/@name dla operacji.
ProtectionLevel Ochrona określona w zasadach zabezpieczeń dołączonych do komunikatów wsdl:binding/wsdl:operation dla tej operacji.
IsInitiating / wsdl:portType/wsdl:operation@msc:isInitiating wartość dla operacji. Ten atrybut jest rozszerzeniem WCF dla WSDL 1.1.
IsTerminating / wsdl:portType/wsdl:operation@msc:isTerminating wartość dla operacji. Ten atrybut jest rozszerzeniem WCF dla WSDL 1.1.
Messages Komunikaty wsdl:portType/wsdl:operation/wsdl:input i wsdl:portType/wsdl:operation/wsdl:output dla operacji.
Faults Definicje wsdl:portType/wsdl:operation/wsdl:fault operacji.
Behaviors Element DataContractSerializerOperationBehavior i XmlSerializerOperationBehavior zajmuje się powiązaniem operacji i komunikatami operacji.

Element DataContractSerializerOperationBehavior

Element DataContractSerializerOperationBehavior dla operacji to implementacja IWsdlExportExtension, która zajmuje się eksportem komunikatów WSDL oraz powiązań dla tej operacji. Typy schematów XML są eksportowane przy użyciu elementu XsdDataContractExporter. Określa DataContractSerializerOperationBehavior również użycie, styl oraz eksporter i importer schematu przeznaczone do tej operacji.

Właściwości Mapowanie WSDL
DataContractFormatAttribute Właściwość Style dla tego atrybutu mapuje wartość wsdl:binding/wsdl:operation/soap:operation/@style dla operacji.

Element DataContractSerializerOperationBehavior obsługuje tylko dosłowne wykorzystanie typów schematów w WSDL.

The XmlSerializerOperationBehavior

Element XmlSerializerOperationBehavior dla operacji to implementacja IWsdlExportExtension, która zajmuje się eksportem komunikatów WSDL oraz powiązań dla tej operacji. Typy schematów XML są eksportowane przy użyciu elementu XmlSchemaExporter. Określa XmlSerializerOperationBehavior również użycie, styl oraz eksporter i importer schematu przeznaczone do tej operacji.

Właściwości Mapowanie WSDL
XmlSerializerFormatAttribute Właściwość Style dla tego atrybutu mapuje wartość wsdl:binding/wsdl:operation/soap:operation/@style dla operacji.

Właściwość Use tego atrybutu mapuje na wsdl:binding/wsdl:operation/soap:operation /*/@use wartości dla wszystkich komunikatów w operacji.

Wiadomości

MessageDescription Wystąpienie jest mapowane na wsdl:message, do którego odnosi się komunikat wsdl:portType/wsdl:operation/wsdl:input lub wsdl:portType/wsdl:operation/wsdl:output w operacji. Element MessageDescription ma treść i nagłówki.

Właściwości Mapowanie WSDL
Action Akcja SOAP lub WS-Addressing dla komunikatu.

Pamiętaj, że operacje używające ciągu akcji "*" nie są reprezentowane w języku WSDL.
Direction MessageDirection.Input odnosi się do wsdl:input.

MessageDirection.Output odnosi się do wsdl:output.
ProtectionLevel Asercje ochrony w polityce bezpieczeństwa związanej z definicją tego komunikatu wsdl:message.
Body Treść wiadomości.
Headers Nagłówki wiadomości.
ContractDescription.Name, OperationContract.Name Podczas eksportu wykorzystywany do uzyskania wartości wsdl:message/@name.

Treść wiadomości

Instancja MessageBodyDescription odwzorowuje się na definicje wsdl:message/wsdl:part treści komunikatu. Treść wiadomości może być opakowana lub bez opakowania.

Właściwości Mapowanie WSDL
WrapperName Jeśli styl nie jest RPC, to WrapperName mapuje na nazwę elementu, do którego odnosi się wsdl:message/wsdl:part z @name ustawionym na "parametry".
WrapperNamespace Jeśli styl nie jest RPC, to WrapperNamespace mapuje do przestrzeni nazw elementów dla wsdl:message/wsdl:part, przy czym @name jest ustawione na "parameters".
Parts Części składające się na treść wiadomości.
ReturnValue Element podrzędny elementu opakowującego, jeśli element opakowujący istnieje (styl opakowania dokumentu lub styl RPC), w przeciwnym razie pierwszy wsdl:message/wsdl:part we wiadomości.

Części komunikatów

MessagePartDescription Wystąpienie odwzorowuje się na wsdl:message/wsdl:part oraz na typ schematu XML lub element, do którego wskazuje część komunikatu.

Właściwości Mapowanie WSDL
Name Wartość wsd:message/wsdl:part/@name dla fragmentu komunikatu oraz nazwa elementu, do którego ten fragment wskazuje.
Namespace Przestrzeń nazw elementu, do którego wskazuje część komunikatu.
Index Indeks wsdl:message/wsdl:part komunikatu.
ProtectionLevel Asercje ochrony są zawarte w zasadach zabezpieczeń dołączonych do wsdl:message definicji tej części komunikatu. Zasady są sparametryzowane, aby wskazać konkretną część komunikatu.
MessageType Typ schematu XML elementu, do którego wskazuje część komunikatu.

Nagłówki komunikatów

Wystąpienie MessageHeaderDescription jest częścią komunikatu, która również mapuje na soap:header powiązanie dla części komunikatu.

Błędów

FaultDescription Odnosi się do definicji wsdl:portType/wsdl:operation/wsdl:fault oraz powiązanej z nią definicji wsdl:message. Element wsdl:message jest dodawany do tej samej docelowej przestrzeni nazw co skojarzony z nim typ portu WSDL. Element wsdl:message ma jedną część wiadomości o nazwie "detail", która wskazuje na element schematu XML odpowiadający wartości właściwości DefaultType dla instancji FaultDescription.

Właściwości Mapowanie WSDL
Name /wsdl:portType/wsdl:operation/wsdl:fault@name wartość błędu.
Namespace Przestrzeń nazw elementu schematu XML, do której odnosi się część komunikatu dotycząca szczegółów błędu.
Action Działanie SOAP lub WS-Addressing związane z błędem.
ProtectionLevel Asercje ochrony w ramach zasad zabezpieczeń dołączonych do wsdl:message definicji tego błędu.
DetailType Typ schematu XML elementu, do którego wskazuje część komunikatu szczegółowego.
Name, ContractDescription.Name, OperationDescription.Name, Służy do uzyskiwania wsdl:message/@name wartości komunikatu o błędzie.

Zobacz także