ServiceDescription und WSDL-Verweis
In diesem Thema wird beschrieben, wie Windows Communication Foundation (WCF) Web Services Description Language (WSDL)-Dokumente ServiceDescription-Instanzen zuordnet bzw. die Dokumente von diesen Instanzen zuordnet.
Zuordnen von ServiceDescription zu WSDL 1.1
Sie können WCF verwenden, um WSDL-Dokumente von einer ServiceDescription-Instanz für den Dienst zu exportieren. WSDL-Dokumente werden automatisch für den Dienst generiert, wenn Metadatenendpunkte veröffentlicht werden.
Mithilfe des WsdlImporter-Typs können auch ServiceEndpoint-Instanzen ContractDescription-Instanzen und Binding-Instanzen aus WSDL-Dokumenten importiert werden.
Die von WCF exportierten WSDL-Dokumente importieren alle verwendeten XML-Schemadefinitionen aus externen XML-Schemadokumenten. Ein separates XML-Schemadokument wird für jeden Zielnamespace exportiert, der von den Datentypen im Dienst verwendet wird. Ebenso wird ein separates WSDL-Dokument für jeden Zielnamespace exportiert, der von den Dienstverträgen verwendet wird.
ServiceDescription
Einem wsdl:service-Element wird eine ServiceDescription-Instanz zugeordnet. Eine ServiceDescription-Instanz enthält eine Auflistung von ServiceEndpoint-Instanzen, die jeweils einzelnen wsdl:port-Elementen zugeordnet werden.
Eigenschaften | WSDL-Zuordnung |
---|---|
Name |
Der wsdl:service/@name-Wert für den Dienst. |
Namespace |
Der targetNamespace für die wsdl:service-Definition des Diensts. |
Endpoints |
Die wsdl:port-Definitionen für den Dienst. |
ServiceEndpoint
Einem wsdl:port-Element wird eine ServiceEndpoint-Instanz zugeordnet. Eine ServiceEndpoint-Instanz enthält eine Adresse, eine Bindung und einen Vertrag.
Endpunktverhalten, die die IWsdlExportExtension-Schnittstelle implementieren, können das wsdl:port-Element für den Endpunkt ändern, an den sie angehängt sind.
Eigenschaften | WSDL-Zuordnung |
---|---|
Name |
Der wsdl:port/@name-Wert für den Endpunkt und den wsdl:binding/@name-Wert für die Endpunktbindung. |
Address |
Die Adresse für die wsdl:port-Definition des Endpunkts. Der Transport für den Endpunkt bestimmt das Format der Adresse. Für von WCF unterstützte Transporte kann es sich dabei zum Beispiel um eine SOAP-Adresse oder einen Endpunktverweis handeln. |
Binding |
Die wsdl:binding-Definition für den Endpunkt. Im Gegensatz zu wsdl:binding-Definitionen werden Bindungen in WCF an keinen Vertrag gebunden. |
Contract |
Die wsdl:portType-Definition für den Endpunkt. |
Behaviors |
Endpunktverhalten, die die IWsdlExportExtension-Schnittstelle implementieren, können wsdl:port für den Endpunkt ändern. |
Bindungen
Die Bindungsinstanz für eine ServiceEndpoint-Instanz wird einer wsdl:binding-Definition zugeordnet. Im Gegensatz zu wsdl:binding-Definitionen, die einer bestimmten wsdl:portType-Definition zugewiesen werden müssen, sind WCF-Bindungen vertragsunabhängig.
Eine Bindung besteht aus einer Auflistung von Bindungselementen. Jedes Element beschreibt einige Aspekte der Kommunikation zwischen dem Endpunkt und den Clients. Darüber hinaus besitzt eine Bindung eine MessageVersion, die die EnvelopeVersion und die AddressingVersion für den Endpunkt angibt.
Eigenschaften | WSDL-Zuordnung |
---|---|
Name |
Wird im Standardnamen eines Endpunkts verwendet, bei dem es sich um den Bindungsnamen handelt, an den der Vertragsname durch einen Unterstrich abgetrennt angefügt ist. |
Namespace |
targetNamespace für die wsdl:binding-Definition. Ist eine Richtlinie an den WSDL-Anschluss angehängt, wird der importierte Bindungsnamespace dem targetNamespace für die wsdl:port-Definition zugeordnet. |
BindingElementCollection entsprechend der Rückgabe durch die CreateBindingElements()-Methode. |
Verschiedene domänenspezifische Erweiterungen der wsdl:binding-Definition, in der Regel Richtlinienassertionen. |
MessageVersion |
EnvelopeVersion und AddressingVersion für den Endpunkt. Bei Angabe von MessageVersion.None enthält die WSDL-Bindung keine SOAP-Bindung, und der WSDL-Anschluss weist keinen WS-Adressierungsinhalt auf. Diese Einstellung wird in der Regel für Plain Old XML (POX)-Endpunkte verwendet. |
BindingElements
Die Bindungselemente für eine Endpunktbindung werden verschiedenen WSDL-Erweiterungen in wsdl:binding zugeordnet, beispielsweise Richtlinienassertionen.
Das TransportBindingElement für die Bindung bestimmt den für Transporte verwendeten Uniform Resource Identifier (URI) für eine SOAP-Bindung.
AddressingVersion
Die AddressingVersion einer Bindung wird der Version der in wsd:port verwendeten Adressierung zugeordnet. WCF unterstützt SOAP 1.1- und SOAP 1.2-Adressen sowie Endpunktverweise für WS-Adressierung 08/2004 und WS-Adressierung 1.0.
EnvelopeVersion
Die EnvelopeVersion einer Bindung wird der in wsdl:binding verwendeten Version von SOAP zugeordnet. WCF unterstützt SOAP 1.1- und SOAP 1.2-Bindungen.
Verträge
Die ContractDescription-Instanz für eine ServiceEndpoint-Instanz wird wsdl:portType zugeordnet. Eine ContractDescription-Instanz beschreibt alle Vorgänge für einen angegebenen Vertrag.
Eigenschaften | WSDL-Zuordnung |
---|---|
Name |
Der wsdl:portType/@name-Wert für den Vertrag. |
Namespace |
Der targetNamespace für die wsdl:portType-Definition. |
SessionMode |
Der wsdl:portType/@msc:usingSession-Wert für den Vertrag. Dieses Attribut ist eine WCF-Erweiterung für WSDL 1.1. |
Operations |
Die wsdl:operation-Definitionen für den Vertrag. |
Vorgänge
Eine OperationDescription-Instanz wird wsdl:portType/wsdl:operation zugeordnet. OperationDescription beinhaltet eine Auflistung von MessageDescription-Instanzen, die die Nachrichten für den Vorgang beschreiben.
Zwei Vorgangsverhalten besitzen einen großen Einfluss auf die Zuordnung von OperationDescription zu einem WSDL-Dokument: DataContractSerializerOperationBehavior und XmlSerializerOperationBehavior.
Eigenschaften | WSDL-Zuordnung |
---|---|
Name |
Der wsdl:portType/wsdl:operation/@name-Wert für den Vorgang. |
ProtectionLevel |
Schutzassertionen in der Sicherheitsrichtlinie, die an die wsdl:binding/wsdl:operation-Nachrichten für diesen Vorgang angehängt ist. |
IsInitiating |
Der wsdl:portType/wsdl:operation/@msc:isInitiating-Wert für den Vorgang. Dieses Attribut ist eine WCF-Erweiterung für WSDL 1.1. |
IsTerminating |
Der wsdl:portType/wsdl:operation/@ msc:isTerminating-Wert für den Vorgang. Dieses Attribut ist eine WCF-Erweiterung für WSDL 1.1. |
Messages |
Die wsdl:portType/wsdl:operation/wsdl:input-Nachrichten und die wsdl:portType/wsdl:operation/wsdl:output-Nachrichten für den Vorgang. |
Faults |
Die wsdl:portType/wsdl:operation/wsdl:fault-Definitionen für den Vorgang. |
Behaviors |
DataContractSerializerOperationBehavior und XmlSerializerOperationBehavior dienen dem Umgang mit der Vorgangsbindung und den Vorgangsnachrichten. |
DataContractSerializerOperationBehavior
Das DataContractSerializerOperationBehavior für einen Vorgang ist eine IWsdlExportExtension-Implementierung, die die WSDL-Nachrichten und die Bindung für diesen Vorgang exportiert. Die XML-Schematypen werden mithilfe von XsdDataContractExporter exportiert. DataContractSerializerOperationBehavior bestimmt auch die Verwendung, das Format sowie das Schemaexport- und -importprogramm, die für diesen Vorgang zu verwenden sind.
Eigenschaften | WSDL-Zuordnung |
---|---|
DataContractFormatAttribute |
Die Style-Eigenschaft für dieses Attribut wird dem wsdl:binding/wsdl:operation/soap:operation/@style-Wert für den Vorgang zugeordnet. DataContractSerializerOperationBehavior unterstützt nur die literale Verwendung der Schematypen in WSDL. |
XmlSerializerOperationBehavior
Das XmlSerializerOperationBehavior für einen Vorgang ist eine IWsdlExportExtension-Implementierung, die die WSDL-Nachrichten und die Bindung für diesen Vorgang exportiert. Die XML-Schematypen werden mithilfe von XmlSchemaExporter exportiert. XmlSerializerOperationBehavior bestimmt auch die Verwendung, das Format sowie das Schemaexport- und -importprogramm, die für diesen Vorgang zu verwenden sind.
Eigenschaften | WSDL-Zuordnung |
---|---|
XmlSerializerFormatAttribute |
Die Style-Eigenschaft für dieses Attribut wird dem wsdl:binding/wsdl:operation/soap:operation/@style-Wert für den Vorgang zugeordnet. Die Use-Eigenschaft für dieses Attribut wird den wsdl:binding/wsdl:operation/soap:operation/*/@use-Werten für alle Nachrichten im Vorgang zugeordnet. |
Nachrichten
Eine MessageDescription-Instanz wird einer wsdl:message zugeordnet, auf die von einer wsdl:portType/wsdl:operation/wsdl:input-Nachricht oder einer wsdl:portType/wsdl:operation/wsdl:output-Nachricht in einem Vorgang verwiesen wird. MessageDescription besitzt einen Text und Header.
Eigenschaften | WSDL-Zuordnung |
---|---|
Action |
Die SOAP- oder WS-Adressierungsaktion für die Nachricht. Beachten Sie, dass Vorgänge, die die Aktionszeichenfolge "*" verwenden, nicht in WSDL dargestellt werden. |
Direction |
MessageDirection.Input wird wsdl:input zugeordnet. MessageDirection.Output wird wsdl:output zugeordnet. |
ProtectionLevel |
Schutzassertionen in der Sicherheitsrichtlinie, die an die wsdl:message-Definition für diese Nachricht angehängt sind. |
Body |
Der Text der Nachricht. |
Headers |
Die Header für die Nachricht. |
ContractDescription.Name, OperationContract.Name |
Wird beim Export zum Ableiten des wsdl:message/@name-Werts verwendet. |
Nachrichtentext
Eine MessageBodyDescription-Instanz wird den wsdl:message/wsdl:part-Definitionen für den Text einer Nachricht zugeordnet. Der Nachrichtentext wird möglicherweise umgebrochen oder ist leer.
Eigenschaften | WSDL-Zuordnung |
---|---|
WrapperName |
Ist das Format nicht RPC, wird WrapperName dem Elementnamen zugeordnet, auf den von wsdl:message/wsdl:part verwiesen wird. Dabei ist @name auf "parameters" festgelegt. |
WrapperNamespace |
Ist das Format nicht RPC, wird WrapperNamespace dem Elementnamespace für wsdl:message/wsdl:part zugeordnet, wobei @name auf "parameters" festgelegt ist. |
Parts |
Die nachrichtenbezogenen Teile dieses Nachrichtentexts. |
ReturnValue |
Das untergeordnete Element des Wrapperelements, sofern ein Wrapperelement vorhanden ist (Dokument mit Umbruch oder RPC-Format), andernfalls der erste wsdl:message/wsdl:part in der Nachricht. |
Nachrichtenteile
Eine MessagePartDescription-Instanz wird wsdl:message/wsdl:part und dem XML-Schematyp oder -element zugeordnet, auf den bzw. das der Nachrichtenteil verweist.
Eigenschaften | WSDL-Zuordnung |
---|---|
Name |
Der wsd:message/wsdl:part/@name-Wert für den Nachrichtenteil und der Name des Elements, auf das der Nachrichtenteil verweist. |
Namespace |
Der Namespace des Elements, auf das der Nachrichtenteil verweist. |
Index |
Der Index des wsdl:message/wsdl:part für die Nachricht. |
ProtectionLevel |
Schutzassertionen in der Sicherheitsrichtlinie, die an die wsdl:message-Definition für diesen Nachrichtenteil angehängt sind. Die Richtlinie wird parametrisiert, um auf den bestimmten Nachrichtenteil zu verweisen. |
MessageType |
Der XML-Schematyp des Elements, auf das der Nachrichtenteil verweist. |
Nachrichtenheader
Eine MessageHeaderDescription-Instanz ist ein Nachrichtenteil, der auch einer soap:header-Bindung für den Nachrichtenteil zugeordnet wird.
Fehler
Eine FaultDescription-Instanz wird einer wsdl:portType/wsdl:operation/wsdl:fault-Definition und der entsprechenden wsdl:message-Definition zugeordnet. wsdl:message wird demselben Zielnamespace wie der zugewiesene WSDL-Anschlusstyp hinzugefügt. wsdl:message besitzt einen einzelnen Nachrichtenteil mit der Bezeichnung "detail", der auf das XML-Schemaelement verweist, das dem DefaultType-Eigenschaftswert für die FaultDescription-Instanz entspricht.
Eigenschaften | WSDL-Zuordnung |
---|---|
Name |
Der wsdl:portType/wsdl:operation/wsdl:fault/@name-Wert für den Fehler. |
Namespace |
Der Namespace des XML-Schemaelements, auf das der Nachrichtenteil mit den Fehlerdetails verweist. |
Action |
Die SOAP- oder WS-Adressierungsaktion für den Fehler. |
ProtectionLevel |
Schutzassertionen in der Sicherheitsrichtlinie, die an die wsdl:message-Definition für diesen Fehler angehängt sind. |
DetailType |
Der XML-Schematyp des Elements, auf das der Nachrichtenteil mit den Details verweist. |
Name, ContractDescription.Name, OperationDescription.Name, |
Wird zum Ableiten des wsdl:message/@name-Werts für die Fehlermeldung verwendet. |