WCF 拡張に対するカスタム メタデータのエクスポートExporting Custom Metadata for a WCF Extension

Windows Communication Foundation (WCF) では、メタデータのエクスポートはサービス エンドポイントを記述して、クライアントを使用してサービスを使用する方法を理解する標準化表現に投影するそれらのプロセスです。In Windows Communication Foundation (WCF), metadata export is the process of describing service endpoints and projecting them into a parallel, standardized representation that clients can use to understand how to use the service. カスタム メタデータは、システム指定のメタデータ エクスポーターでエクスポートできない XML 要素で構成されます。Custom metadata consists of XML elements that the system-provided metadata exporters cannot export. 通常、これは、ユーザー定義動作のカスタム WSDL 要素とバインド要素、およびバインディングとコントラクトの機能と要件に関するポリシー アサーションを含みます。Typically, this includes custom WSDL elements for user-defined behaviors and binding elements and policy assertions about the capabilities and requirements of bindings and contracts.

ここでは、カスタム WSDL またはポリシー アサーションのエクスポートについて説明し、エクスポート プロセス自体には重点を置きません。This section describes exporting custom WSDL or policy assertions, and does not focus on the exporting process itself. 型をエクスポートおよびインポートのメタデータがカスタムであるか、システムによって作成されたかどうかに関係なくメタデータを使用する方法の詳細については、次を参照してください。エクスポートおよびインポートするメタデータします。For more information about how to use the types that export and import metadata regardless of whether the metadata is custom or system-constructed, see Exporting and Importing Metadata.

概要Overview

使用してメタデータが公開されるときに、 System.ServiceModel.Description.ServiceMetadataBehaviorSystem.ServiceModel.Description.ServiceDescriptionが調べられるすべてのコントラクトと WCF は、システム指定の属性とバインドを使用してサポートできるバインドに対して XSD と WSDL のポリシー アサーションを含む--を生成します。When metadata is published using the System.ServiceModel.Description.ServiceMetadataBehavior, the System.ServiceModel.Description.ServiceDescription is examined and XSD and WSDL -- including policy assertions -- are generated for all contracts and bindings that WCF can support using system-provided attributes and bindings. ただし、カスタム動作属性やバインド要素を適切にエクスポートするには、あらかじめサポートしておく必要があります。However, custom behavior attributes or binding elements require support before they can be exported properly.

ここでは、次の内容について説明します。This section describes:

  1. WSDL を発行する前に WSDL の生成データを公開する System.ServiceModel.Description.IWsdlExportExtension インターフェイスを実装して使用する方法。How to implement and use the System.ServiceModel.Description.IWsdlExportExtension interface, which exposes the WSDL generation data to you prior to publishing the WSDL.

  2. WSDL データに含まれるポリシー アサーションをエクスポートする前にポリシー データを公開する System.ServiceModel.Description.IPolicyExportExtension インターフェイスを実装して使用する方法。How to implement and use the System.ServiceModel.Description.IPolicyExportExtension interface, which exposes the policy data to you prior to exporting the policy assertions in WSDL data.

カスタム WSDL とポリシー アサーションをインポートする方法の詳細については、次を参照してください。 WCF 拡張機能のカスタム メタデータのインポートします。For more information about importing custom WSDL and policy assertions, see Importing Custom Metadata for a WCF Extension.

カスタム WSDL 要素のエクスポートExporting Custom WSDL Elements

操作の動作、コントラクトの動作、エンドポイントの動作、またはバインド要素 IWsdlExportExtension (それぞれ IOperationBehaviorIContractBehaviorIEndpointBehaviorSystem.ServiceModel.Channels.BindingElement) を実装し、エクスポートしようとしているサービスの説明に動作またはバインド要素を挿入します Implement the IWsdlExportExtension on an operation behavior, contract behavior, endpoint behavior or binding element (IOperationBehavior, IContractBehavior, IEndpointBehavior, or System.ServiceModel.Channels.BindingElement respectively) and insert the behaviors or binding elements into the description of the service that you are trying to export. (動作を挿入する方法の詳細については、次を参照してください。構成と、ランタイムの動作を拡張)。(For more information about inserting behaviors, see Configuring and Extending the Runtime with Behaviors). IWsdlExportExtension はエンドポイントごとに呼び出され、コントラクトがエクスポートされていない場合は、各エンドポイントによって最初にコントラクトがエクスポートされます。The IWsdlExportExtension is called for each endpoint and each endpoint exports the contract first if it has not already been exported. 必要に応じて、次のいずれかのエクスポート プロセスに参加できます。You can participate in either export process, depending upon your needs:

ExportContract メソッドは、エクスポートされる IWsdlExportExtension インスタンスに含まれるすべての System.ServiceModel.Description.ContractDescription 実装で呼び出されます。The ExportContract method is called on all IWsdlExportExtension implementations within the System.ServiceModel.Description.ContractDescription instance that is being exported. ExportEndpoint メソッドは、エクスポートされる IWsdlExportExtension インスタンスを持つすべての System.ServiceModel.Description.ServiceEndpoint 実装で呼び出されます。The ExportEndpoint method is called on all IWsdlExportExtension implementations with the System.ServiceModel.Description.ServiceEndpoint instance that is being exported.

詳細については、「方法 :カスタム WSDL をエクスポートサンプルとサンプルカスタム WSDL パブリケーションします。For more information, see How to: Export Custom WSDL and the sample Custom WSDL Publication.

カスタム ポリシー アサーションのエクスポートExporting Custom Policy Assertions

IPolicyExportExtensionBindingElement を実装し、バインド要素をバインディングに追加して、バインディングのサポートとコントラクトの機能に関するカスタム ポリシー アサーションを WSDL に書き込みます。Implement the IPolicyExportExtension on a BindingElement and add the binding element to the binding to write custom policy assertions about binding support and contract capabilities into the WSDL. バインディングに実装されたバインド要素をエクスポートすると、IPolicyExportExtension が 1 回呼び出され、PolicyConversionContextExportPolicy メソッドに渡します。The IPolicyExportExtension is called once when exporting the implemented binding element in a binding and passes the PolicyConversionContext to the ExportPolicy method. PolicyConversionContext インスタンスに対してこのメソッドを使用すると、メッセージ、操作、またはエンドポイント サブジェクトで WSDL バインディングに結び付けられているポリシー アサーションを追加できます。You can use the methods on the PolicyConversionContext instance to add to the policy assertions attached to the WSDL binding at the message, operation or endpoint subjects.

詳細については、「方法 :カスタム ポリシー アサーションをエクスポートします。For more information, see How to: Export Custom Policy Assertions.

関連項目See also