ServiceDescription と WSDL 参照ServiceDescription and WSDL Reference

このトピックとの間に、Windows Communication Foundation (WCF) が Web サービス記述言語 (WSDL) ドキュメントをマップする方法について説明しますServiceDescriptionインスタンス。This topic describes how Windows Communication Foundation (WCF) maps Web Services Description Language (WSDL) documents to and from ServiceDescription instances.

ServiceDescription から WSDL 1.1 へのマッピングHow ServiceDescription Maps to WSDL 1.1

WCF を使用して、WSDL ドキュメントからのエクスポート、ServiceDescriptionサービスのインスタンス。You can use WCF to export WSDL documents from a ServiceDescription instance for your service. WSDL ドキュメントは、メタデータ エンドポイントを公開したときに自動的にサービスに対して生成されます。WSDL documents are automatically generated for your service when you publish metadata endpoints.

また、ServiceEndpoint 型を使用して、WSDL ドキュメントから ContractDescription インスタンス、Binding インスタンス、および WsdlImporter インスタンスをインポートできます。You can also import ServiceEndpoint instances, ContractDescription instances, and Binding instances from WSDL documents using the WsdlImporter type.

WCF では、によってエクスポートされた WSDL ドキュメントでは、外部の XML スキーマ ドキュメントから使用する XML スキーマ定義をインポートします。The WSDL documents, exported by WCF, import any XML Schema definitions used from external XML Schema documents. データ型がサービスで使用するターゲット名前空間ごとに、個別の XML スキーマ ドキュメントがエクスポートされます。A separate XML Schema document is exported for each target namespace the data types use in the service. 同様に、サービス コントラクトが使用するターゲット名前空間ごとに、個別の WSDL ドキュメントがエクスポートされます。Likewise, a separate WSDL document is exported for each target namespace the service contracts use.

ServiceDescriptionServiceDescription

ServiceDescription インスタンスは wsdl:service 要素にマップされます。A ServiceDescription instance maps to a wsdl:service element. ServiceDescription インスタンスは、それぞれが個別の wsdl:port 要素にマップされる ServiceEndpoint インスタンスのコレクションを格納します。A ServiceDescription instance contains a collection of ServiceEndpoint instances that each map to individual wsdl:port elements.

プロパティProperties WSDL マッピングWSDL mapping
Name wsdl:service /@nameサービスの値。The wsdl:service/@name value for the service.
Namespace サービスの wsdl:service 定義の targetNamespaceThe targetNamespace for the wsdl:service definition for the service.
Endpoints サービスの wsdl:port 定義The wsdl:port definitions for the service.

ServiceEndpointServiceEndpoint

ServiceEndpoint インスタンスは wsdl:port 要素にマップされます。A ServiceEndpoint instance maps to a wsdl:port element. ServiceEndpoint インスタンスは、アドレス、バインディング、およびコントラクトを格納します。A ServiceEndpoint instance contains an address, a binding, and a contract.

IWsdlExportExtension インターフェイスを実装するエンドポイント動作は、その動作が関連付けられているエンドポイントの wsdl:port 要素を変更できます。Endpoint behaviors that implement the IWsdlExportExtension interface can modify the wsdl:port element for the endpoint they are attached to.

プロパティProperties WSDL マッピングWSDL mapping
Name wsdl:port /@name 、エンドポイントの値とwsdl:binding/@nameエンドポイント バインドの値。The wsdl:port/@name value for the endpoint and the wsdl:binding/@name value for the endpoint binding.
Address エンドポイントの wsdl:port 定義のアドレスThe address for the wsdl:port definition for the endpoint.

アドレスの形式は、エンドポイントのトランスポートによって決まります。The transport for the endpoint determines the format of the address. たとえば、トランスポートの WCF でサポートされている可能性があります、SOAP アドレスまたはエンドポイント参照。For example, for WCF-supported transports it could be a SOAP address or an endpoint reference.
Binding エンドポイントの wsdl:binding 定義The wsdl:binding definition for the endpoint.

異なりwsdl:bindingwcf バインドの定義がどのコントラクトに関連付けられていません。Unlike wsdl:binding definitions, bindings in WCF are not tied to any one contract.
Contract エンドポイントの wsdl:portType 定義The wsdl:portType definition for the endpoint.
Behaviors IWsdlExportExtension インターフェイスを実装するエンドポイント動作は、エンドポイントの wsdl:port を変更できます。Endpoint behaviors that implement the IWsdlExportExtension interface can modify the wsdl:port for the endpoint.

バインディングBindings

ServiceEndpoint インスタンスのバインディング インスタンスは、wsdl:binding 定義にマップされます。The binding instance for a ServiceEndpoint instance maps to a wsdl:binding definition. 異なりwsdl:binding定義で、特定の関連付けられている必要がありますwsdl:portType定義、WCF バインドは、コントラクトに依存しません。Unlike wsdl:binding definitions, which must be associated with a specific wsdl:portType definition, WCF bindings are independent of any contract.

バインディングは、バインド要素のコレクションで構成されます。A binding is made up of a collection of binding elements. 各要素は、エンドポイントがクライアントと通信する方法の一部分を記述します。Each element describes some aspect of how the endpoint communicates with clients. また、バインディングには、エンドポイントの MessageVersionEnvelopeVersion を示すための AddressingVersion があります。Additionally, a binding has a MessageVersion that indicates the EnvelopeVersion and AddressingVersion for the endpoint.

プロパティProperties WSDL マッピングWSDL mapping
Name エンドポイントの既定の名前で使用されます。この名前は、バインディング名にコントラクト名を追加し、アンダースコアで区切った形で表記されます。Used in the default name of an endpoint, which is the binding name with the contract name appended separated by an underscore.
Namespace targetNamespace 定義の wsdl:bindingThe targetNamespace for the wsdl:binding definition.

インポートでは、WSDL ポートに関連付けられたポリシーがある場合、インポートされたバインディング名前空間は、targetNamespace 定義の wsdl:port にマップされます。On import, if a policy is attached to the WSDL port, the imported binding namespace maps to the targetNamespace for the wsdl:port definition.
BindingElementCollection (CreateBindingElements() メソッドによって返されるプロパティとして)BindingElementCollection, as returned by the CreateBindingElements() method wsdl:binding 定義に対するさまざまなドメイン固有の拡張。通常は、ポリシー アサーション。Various domain-specific extensions to the wsdl:binding definition, typically policy assertions.
MessageVersion エンドポイントの EnvelopeVersion および AddressingVersionThe EnvelopeVersion and AddressingVersion for the endpoint.

MessageVersion.None が指定されている場合、WSDL バインディングは SOAP バインディングを格納せず、WSDL ポートは WS-Addressing コンテンツを含みません。When MessageVersion.None is specified, the WSDL binding does not contain a SOAP binding and the WSDL port does not contain WS-Addressing content. この設定は、通常、Plain Old XML (POX) エンドポイントに対して使用されます。This setting is typically used for plain old XML (POX) endpoints.

BindingElementsBindingElements

エンドポイント バインディングのバインド要素は、ポリシー アサーションなど、wsdl:binding のさまざまな WSDL 拡張にマップされます。The binding elements for an endpoint binding map to various WSDL extensions in the wsdl:binding, such as policy assertions.

SOAP バインディングのトランスポート URI (Uniform Resource Identifier) は、バインディングの TransportBindingElement によって決まります。The TransportBindingElement for the binding determines the transport Uniform Resource Identifier (URI) for a SOAP binding.

AddressingVersionAddressingVersion

バインディングの AddressingVersion は、wsd:port で使用されるアドレス指定のバージョンにマップされます。The AddressingVersion on a binding maps to the version of addressing used in the wsd:port. WCF がサポートする SOAP 1.1 と SOAP 1.2 のアドレスおよび Ws-addressing 08/2004 と Ws-addressing 1.0 のエンドポイント参照。WCF supports SOAP 1.1 and SOAP 1.2 addresses, and WS-Addressing 08/2004 and WS-Addressing 1.0 endpoint references.

EnvelopeVersionEnvelopeVersion

バインディングの EnvelopeVersion は、wsdl:binding で使用される SOAP のバージョンにマップされます。The EnvelopeVersion on a binding maps to the version of SOAP used in the wsdl:binding. WCF では、SOAP 1.1 と SOAP 1.2 のバインディングをサポートします。WCF supports SOAP 1.1 and SOAP 1.2 bindings.

コントラクトContracts

ContractDescription インスタンスの ServiceEndpoint インスタンスは、wsdl:portType にマップされます。The ContractDescription instance for a ServiceEndpoint instance maps to a wsdl:portType. ContractDescription インスタンスは、特定のコントラクトのすべての操作を記述します。A ContractDescription instance describes all of the operations for a given contract.

プロパティProperties WSDL マッピングWSDL mapping
Name wsdl:portType /@nameコントラクトの値。The wsdl:portType/@name value for the contract.
Namespace wsdl:portType 定義の targetNamespaceThe targetNamespace for the wsdl:portType definition.
SessionMode wsdl:portType /@msc:usingSessionコントラクトの値。The wsdl:portType/@msc:usingSession value for the contract. この属性は、WSDL 1.1 用の WCF 拡張機能です。This attribute is a WCF extension for WSDL 1.1.
Operations コントラクトの wsdl:operation 定義The wsdl:operation definitions for the contract.

操作Operations

OperationDescriptionインスタンスにマップするwsdl:portType /wsdl:operationします。An OperationDescription instance maps to a wsdl:portType/wsdl:operation. OperationDescription は、操作のメッセージを記述する MessageDescription インスタンスのコレクションを格納します。An OperationDescription contains a collection of MessageDescription instances that describe the messages for the operation.

主に、2 つの操作動作 OperationDescription および DataContractSerializerOperationBehavior が、XmlSerializerOperationBehavior を WSDL ドキュメントにマップする方法に関与しています。Two operation behaviors participate heavily in how an OperationDescription is mapped to a WSDL document: DataContractSerializerOperationBehavior and XmlSerializerOperationBehavior.

プロパティProperties WSDL マッピングWSDL mapping
Name wsdl:portType / wsdl:operation /@name操作の値。The wsdl:portType/wsdl:operation/@name value for the operation.
ProtectionLevel この操作の wsdl:binding/wsdl:operation メッセージに関連付けられたセキュリティ ポリシーの保護アサーションProtection assertions in security policy attached to the wsdl:binding/wsdl:operation messages for this operation.
IsInitiating wsdl:portType / wsdl:operation /@msc:isInitiating操作の値。The wsdl:portType/wsdl:operation/@msc:isInitiating value for the operation. この属性は、WSDL 1.1 用の WCF 拡張機能です。This attribute is a WCF extension for WSDL 1.1.
IsTerminating wsdl:portType / wsdl:operation /@msc:isTerminating操作の値。The wsdl:portType/wsdl:operation/@msc:isTerminating value for the operation. この属性は、WSDL 1.1 用の WCF 拡張機能です。This attribute is a WCF extension for WSDL 1.1.
Messages wsdl:portType / wsdl:operation / wsdl:inputwsdl:portType / wsdl:operation / wsdl:output操作のメッセージ。The wsdl:portType/wsdl:operation/wsdl:input and wsdl:portType/wsdl:operation/wsdl:output messages for the operation.
Faults wsdl:portType / wsdl:operation / wsdl:fault操作の定義。The wsdl:portType/wsdl:operation/wsdl:fault definitions for the operation.
Behaviors DataContractSerializerOperationBehavior および XmlSerializerOperationBehavior は、操作バインディングおよび操作メッセージを扱います。The DataContractSerializerOperationBehavior and XmlSerializerOperationBehavior deal with the operation binding and the operation messages.

DataContractSerializerOperationBehaviorThe DataContractSerializerOperationBehavior

操作の DataContractSerializerOperationBehavior は、その操作の WSDL メッセージとバインディングをエクスポートする IWsdlExportExtension の実装です。The DataContractSerializerOperationBehavior for an operation is an IWsdlExportExtension implementation that exports the WSDL messages and binding for that operation. XML スキーマ型は、XsdDataContractExporter を使用してエクスポートされます。The XML Schema types are exported using the XsdDataContractExporter. また、DataContractSerializerOperationBehavior では、その操作に使用する使用方法、スタイル、およびスキーマ エクスポーターとインポーターを決定します。The DataContractSerializerOperationBehavior also determines the use, style, and schema exporter and importer to use for that operation.

プロパティProperties WSDL マッピングWSDL Mapping
DataContractFormatAttribute Styleこの属性のプロパティにマップ、 wsdl:binding / wsdl:operation / soap:operation /@style操作の値。The Style property for this attribute maps to the wsdl:binding/wsdl:operation/soap:operation/@style value for the operation.

DataContractSerializerOperationBehavior は、WSDL のスキーマ型のリテラル使用だけをサポートします。The DataContractSerializerOperationBehavior supports only the literal use of the schema types in the WSDL.

XmlSerializerOperationBehaviorThe XmlSerializerOperationBehavior

操作の XmlSerializerOperationBehavior は、その操作の WSDL メッセージとバインディングをエクスポートする IWsdlExportExtension の実装です。The XmlSerializerOperationBehavior for an operation is an IWsdlExportExtension implementation that exports the WSDL messages and binding for that operation. XML スキーマ型は、XmlSchemaExporter を使用してエクスポートされます。The XML Schema types are exported using the XmlSchemaExporter. また、XmlSerializerOperationBehavior では、その操作に使用する使用方法、スタイル、およびスキーマ エクスポーターとインポーターを決定します。The XmlSerializerOperationBehavior also determines the use, style, and schema exporter and importer to use for that operation.

プロパティProperties WSDL マッピングWSDL mapping
XmlSerializerFormatAttribute Styleこの属性のプロパティにマップ、 wsdl:binding / wsdl:operation / soap:operation /@style操作の値。The Style property for this attribute maps to the wsdl:binding/wsdl:operation/soap:operation/@style value for the operation.

Useこの属性のプロパティにマップ、 wsdl:binding / wsdl:operation / soap:operation/*/@use操作ですべてのメッセージの値。The Use property for this attribute maps to the wsdl:binding/wsdl:operation/soap:operation/*/@use values for all messages in the operation.

メッセージMessages

AMessageDescriptionインスタンスにマップするwsdl:messageによって参照される、 wsdl:portType / wsdl:operation / wsdl:inputまたはwsdl:portType / wsdl:operation / wsdl:output操作内のメッセージ。A MessageDescription instance maps to a wsdl:message that is referenced by a wsdl:portType/wsdl:operation/wsdl:input or a wsdl:portType/wsdl:operation/wsdl:output message in an operation. MessageDescription には、本文とヘッダーがあります。A MessageDescription has a body and headers.

プロパティProperties WSDL マッピングWSDL Mapping
Action メッセージの SOAP アクションまたは WS-Addressing アクション。The SOAP or WS-Addressing action for the message.

Action 文字列 "*" を使用する操作は、WSDL では表示されません。Note that operations that use the Action string "*" are not represented in WSDL.
Direction MessageDirection.Input マップwsdl:inputします。MessageDirection.Input maps to wsdl:input.

MessageDirection.Output マップwsdl:outputします。MessageDirection.Output maps to wsdl:output.
ProtectionLevel このメッセージの wsdl:message 定義に関連付けられたセキュリティ ポリシーの保護アサーションProtection assertions in security policy attached to the wsdl:message definition for this message.
Body メッセージのメッセージ本文The message body for the message.
Headers メッセージのヘッダーThe headers for the message.
ContractDescription.Name, OperationContract.NameContractDescription.Name, OperationContract.Name エクスポートでは、派生に使用される、 wsdl:message /@name値。On export, used to derive the wsdl:message/@name value.

メッセージ本文Message Body

AMessageBodyDescriptionインスタンスにマッピングされます、 wsdl:message / wsdl:partメッセージの本文を定義します。A MessageBodyDescription instance maps to the wsdl:message/wsdl:part definitions for the body of a message. メッセージ本文は、ラップされている場合とベアの場合があります。The message body may be wrapped or bare.

プロパティProperties WSDL マッピングWSDL Mapping
WrapperName スタイルが RPC ではない場合、次に、WrapperNameによって参照される要素名にマップされます、 wsdl:message / wsdl:partで@name"parameters"に設定します。If the style is not RPC, then the WrapperName maps to the element name referenced by the wsdl:message/wsdl:part with @name set to "parameters".
WrapperNamespace スタイルが RPC ではない場合、次に、WrapperNamespaceの要素の名前空間にマップされます、 wsdl:message / wsdl:partで@name"parameters"に設定します。If the style is not RPC, then the WrapperNamespace maps to the element namespace for the wsdl:message/wsdl:part with @name set to "parameters".
Parts このメッセージ本文のメッセージ部分The message parts for this message body.
ReturnValue ラッパー要素が存在する場合 (ドキュメント ラップ スタイルまたは RPC スタイル)、それ以外の場合は、ラッパー要素の子要素で最初のwsdl:message / wsdl:partメッセージにします。The child element of the wrapper element if a wrapper element exists (document wrapped style, or RPC style), otherwise the first wsdl:message/wsdl:part in the message.

メッセージ部分Message Parts

AMessagePartDescriptionインスタンスにマップするwsdl:message / wsdl:partと XML スキーマ型またはメッセージ部分が指す要素。A MessagePartDescription instance maps to a wsdl:message/wsdl:part and the XML schema type or element that the message part points to.

プロパティProperties WSDL マッピングWSDL mapping
Name wsd:message / wsdl:part /@nameメッセージ部分とメッセージ部分が指す要素の名前の値。The wsd:message/wsdl:part/@name value for the message part and the name of the element that the message part points to.
Namespace メッセージ部分が指す要素の名前空間The namespace of the element that the message part points to.
Index インデックス、 wsdl:message / wsdl:partメッセージ。The index of the wsdl:message/wsdl:part for the message.
ProtectionLevel このメッセージ部分の wsdl:message 定義に関連付けられたセキュリティ ポリシーの保護アサーション。Protection assertions in security policy attached to the wsdl:message definition for this message part. ポリシーは、特定のメッセージ部分を指すためにパラメーター化されます。The policy is parameterized to point to the specific message part.
MessageType メッセージ部分が指す要素の XML スキーマ型The XML Schema type of the element that the message part points to.

メッセージ ヘッダーMessage Headers

MessageHeaderDescription インスタンスは、メッセージ部分の soap:header バインディングにもマップされるメッセージ部分です。A MessageHeaderDescription instance is a message part that also maps to a soap:header binding for the message part.

エラーFaults

AFaultDescriptionインスタンスにマッピングされます、 wsdl:portType / wsdl:operation / wsdl:fault定義およびその関連wsdl:message定義します。A FaultDescription instance maps to a wsdl:portType/wsdl:operation/wsdl:fault definition and its associated wsdl:message definition. wsdl:message は、関連する WSDL ポートの種類と同じターゲット名前空間に追加されます。The wsdl:message is added to the same target namespace as its associated WSDL port type. wsdl:message には、DefaultType インスタンスの FaultDescription プロパティ値に相当する XML スキーマ要素を指す、"detail" という名前の 1 つのメッセージ部分があります。The wsdl:message has a single message part named "detail" that points to the XML Schema element that corresponds to the DefaultType property value for the FaultDescription instance.

プロパティProperties WSDL マッピングWSDL mapping
Name wsdl:portType / wsdl:operation / wsdl:fault /@nameエラーの値。The wsdl:portType/wsdl:operation/wsdl:fault/@name value for the fault.
Namespace エラー詳細メッセージ部分が指す XML スキーマ要素の名前空間The namespace of the XML Schema element that the fault detail message part points to.
Action エラーの SOAP アクションまたは WS-Addressing アクションThe SOAP or WS-Addressing action for the fault.
ProtectionLevel このエラーの wsdl:message 定義に関連付けられたセキュリティ ポリシーの保護アサーションProtection assertions in security policy attached to the wsdl:message definition for this fault.
DetailType 詳細メッセージ部分が指す要素の XML スキーマ型The XML Schema type of the element that the detail message part points to.
Name, ContractDescription.Name, OperationDescription.Name, 派生に使用される、 wsdl:message /@nameエラー メッセージの値。Used to derive the wsdl:message/@name value for the fault message.

関連項目See also