C#と諸々

C#がメインで他もまぁ諸々なブログです
おかしなこと書いてたら指摘してくれると嬉しいです(´・∀・`)
つーかコメント欲しい(´・ω・`)

2007/06/17 15:20
WCF では、ServiceMetadataBehavior を使用すると、ホストが開かれる時に WSDL を自動で生成して公開してくれます。この処理を行っているのは WsdlExporter クラス (System.ServiceModel.Description) です。

WsdlExporter クラスには、開発者が WSDL のエクスポートをカスタマイズできるような仕組みが備わっています。
WSDL のエクスポートをカスタマイズするには、IWsdlExportExtension インターフェイス(System.ServiceModel.Description) を実装したクラスを用意します。
更にこのクラスは、コントラクトビヘイビア、エンドポイントビヘイビア、オペレーションビヘイビア、バインディング要素のいずれかとして実装します。 ( これら特有のインターフェイスを実装する際は、特になんらかの処理を行う必要はありません。例えば、コントラクトビヘイビアならIContractBehavior インターフェイスを実装しますが、このインターフェイスの各メソッドの中身は空で大丈夫です。なお、サービスビヘイビアは含まれていないことに注意します。 )

IWsdlExportExtension インターフェイスには次の二つのメソッドが用意されています。
各メソッドは、第一引数で呼び出し元の WsdlExporter を受け取り、第二引数でカスタマイズを行うためのオブジェクトを受け取ります。

ExportContract メソッド
コントラクトに対して生成される WSDL をカスタマイズします。
第二引数で受け取った WsdlContractConversionContext クラス (System.ServiceModel.Description) のオブジェクトに対してカスタマイズを行います。

ExportEndpoint メソッド
エンドポイントに対して生成される WSDL をカスタマイズします。
第二引数で受け取った WsdlEndpointConversionContext クラス (System.ServiceModel.Description) のオブジェクトに対してカスタマイズを行います。


[ 関連記事 ]
C#と諸々 - 独自のビヘイビアを定義する
C#と諸々 - 独自のビヘイビアを定義する2


[ MSDN 関連記事 ]
メタデータ システムの拡張
WCF 拡張に対するカスタム メタデータのエクスポート
方法 : カスタム WSDL をエクスポートする
ServiceDescription と WSDL 参照
System.ServiceModel.Description 名前空間
System.Web.Services.Description 名前空間

スポンサーサイト



タグ: .NET C# WCF WSDL