Freigeben über


ServiceDescription und WSDL-Referenz

Dieses Thema beschreibt, wie Windows Communication Foundation (WCF) Web Services Description Language (WSDL)-Dokumente auf ServiceDescription-Instanzen abbildet.

Zuordnen von ServiceDescription zu WSDL 1.1

Sie können WCF verwenden, um WSDL-Dokumente aus einer ServiceDescription Instanz für Ihren Dienst zu exportieren. WSDL-Dokumente werden automatisch für Ihren Dienst generiert, wenn Sie Metadatenendpunkte veröffentlichen.

Sie können auch ServiceEndpoint Instanzen, ContractDescription Instanzen und Binding Instanzen aus WSDL-Dokumenten mithilfe des WsdlImporter Typs importieren.

Die von WCF exportierten WSDL-Dokumente importieren alle XML-Schemadefinitionen, die aus externen XML-Schemadokumenten verwendet werden. Ein separates XML-Schemadokument wird für jeden Zielnamespace exportiert, den die Datentypen im Dienst verwenden. Ebenso wird ein separates WSDL-Dokument für jeden Zielnamespace exportiert, den die Dienstverträge verwenden.

Leistungsbeschreibung

Eine ServiceDescription Instanz ist einem wsdl:service Element zugeordnet. Eine ServiceDescription Instanz enthält eine Auflistung von ServiceEndpoint Instanzen, die jeweils einzelnen wsdl:port Elementen zugeordnet sind.

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

Eine ServiceEndpoint Instanz ist einem wsdl:port Element 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, mit dem sie verbunden sind.

Eigenschaften WSDL-Zuordnung
Name Der wsdl:portWert "/@name" für den Endpunkt und der wsdl:bindingWert "/@name" für die Endpunktbindung.
Address Die Adresse für die wsdl:port Definition für den Endpunkt.

Der Transport für den Endpunkt bestimmt das Format der Adresse. Bei WCF-unterstützten Transporten kann es sich beispielsweise um eine SOAP-Adresse oder einen Endpunktverweis handeln.
Binding Die wsdl:binding Definition für den Endpunkt.

Im Gegensatz zu wsdl:binding Definitionen sind Bindungen in WCF nicht an einen Vertrag gebunden.
Contract Die wsdl:portType Definition für den Endpunkt.
Behaviors Endpunktverhalten, die die IWsdlExportExtension-Schnittstelle implementieren, können den wsdl:port-Endpunkt ändern.

Bindungen

Die Bindungsinstanz für eine ServiceEndpoint Instanz ist einer wsdl:binding Definition zugeordnet. Im Gegensatz zu wsdl:binding Definitionen, die einer bestimmten wsdl:portType Definition zugeordnet werden müssen, sind WCF-Bindungen unabhängig von jedem Vertrag.

Eine Bindung besteht aus einer Sammlung von Bindungselementen. Jedes Element beschreibt einen Aspekt der Kommunikation des Endpunkts mit Clients. Darüber hinaus verfügt eine Bindung über ein MessageVersion, das das EnvelopeVersion und 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, wie von der CreateBindingElements() Methode zurückgegeben Verschiedene domänenspezifische Erweiterungen der wsdl:binding Definition, typischerweise Richtlinienbehauptungen.
MessageVersion EnvelopeVersion und AddressingVersion für den Endpunkt.

Wenn MessageVersion.None angegeben ist, enthält die WSDL-Bindung keine SOAP-Bindung und der WSDL-Anschluss enthält keinen WS-Addressing Inhalt. Diese Einstellung wird in der Regel für einfache alte XML-Endpunkte (POX) verwendet.

BindingElements

Die Bindungselemente für eine Endpunktbindung werden verschiedenen WSDL-Erweiterungen in wsdl:binding zugeordnet, beispielsweise Richtlinienassertionen.

Die Bindung TransportBindingElement bestimmt den Uniform Resource Identifier (URI) für den Transport bei einer 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 und WS-Addressing 08/2004- und WS-Addressing 1.0-Endpunktverweise.

EnvelopeVersion

Die EnvelopeVersion einer Bindung wird der in wsdl:binding verwendeten SOAP-Version 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 bestimmten 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.

Operationen

Eine OperationDescription-Instanz wird wsdl:portType/wsdl:operation zugeordnet. Eine OperationDescription enthält eine Auflistung von MessageDescription Instanzen, die die Nachrichten für den Vorgang beschreiben.

Zwei Vorgangsverhalten nehmen stark daran teil, wie ein OperationDescription WSDL-Dokument zugeordnet wird: 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- und wsdl:portType/wsdl:operation/wsdl:output-Meldungen für den Vorgang.
Faults Die wsdl:portType/wsdl:operation/wsdl:fault Definitionen für den Vorgang.
Behaviors Die DataContractSerializerOperationBehavior und XmlSerializerOperationBehavior befassen sich 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 der 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-Attributseigenschaft für dieses Merkmal wird dem wsdl:binding/wsdl:operation/soap:operation/@style Wert für den Vorgang zugeordnet.

Dies DataContractSerializerOperationBehavior unterstützt nur die literale Verwendung der Schematypen in der 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 der 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-Attributseigenschaft für dieses Merkmal 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.

Meldungen

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 Schutzbehauptungen in der Sicherheitsrichtlinie, die der wsdl:message Definition für diese Nachricht angehängt sind.
Body Der Text der Nachricht.
Headers Die Kopfzeilen für die Nachricht.
ContractDescription.Name, OperationContract.Name Wird beim Export verwendet, um den Wert von wsdl:message/@name abzuleiten.

Nachrichtentext

Eine MessageBodyDescription Instanz ordnet die wsdl:message/wsdl:part Definitionen für den Textkörper einer Nachricht zu. 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, wenn ein Wrapperelement vorhanden ist (dokumentenbasierter Stil oder RPC-Stil), andernfalls das erste wsdl:message/wsdl:part in der Nachricht.

Nachrichtenteile

Eine MessagePartDescription Instanz ist einem wsdl:message/wsdl:part und dem XML-Schematyp oder -Element zugeordnet, auf den der Nachrichtenteil verweist.

Eigenschaften WSDL-Zuordnung
Name Der wsd:message/wsdl:partWert "/@name" für den Nachrichtenteil und den Namen 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 Schutz-Assertions in der Sicherheitsrichtlinie, die der wsdl:message-Definition für diesen Nachrichtenteil zugeordnet sind. Die Richtlinie wird parametrisiert, um auf den bestimmten Nachrichtenteil zu verweisen.
MessageType Der XML-Schematyp des Elements, auf das der Nachrichtenteil verweist.

Nachrichtenkopfzeilen

Eine MessageHeaderDescription Instanz ist ein Nachrichtenteil, der auch einer soap:header Bindung für den Nachrichtenteil zugeordnet ist.

Fehler

Eine FaultDescription Instanz ist einer wsdl:portType/wsdl:operation/wsdl:fault Definition und der zugehörigen wsdl:message Definition zugeordnet. Der wsdl:message wird demselben Zielnamespace wie der zugehörige WSDL-Porttyp hinzugefügt. Das Element wsdl:message weist einen einzelnen Nachrichtenteil mit dem Namen "detail" auf, 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 Fehlerdetailmeldungsteil verweist.
Action Die SOAP- oder WS-Adressierungsaktion für den Fehler.
ProtectionLevel Schutzaussagen in der Sicherheitspolitik, die der wsdl:message-Definition für diesen Fehler zugeordnet sind.
DetailType Der XML-Schematyp des Elements, auf das der Detailnachrichtenteil verweist.
Name, ContractDescription.Name, OperationDescription.Name, Wird verwendet, um den wsdl:messageWert "/@name" für die Fehlermeldung abzuleiten.

Siehe auch