クライアントまたはサービス アプリケーションのいずれかで、操作全体にわたる実行の一部の側面をアプリケーション レベルで変更、確認、または拡張するには、IOperationBehavior インターフェイスを実装します。
IOperationBehavior オブジェクトは、これらのメソッドをどれでも使用できますが、通常は、重要なメソッドは 1 つだけです。この場合、使用されないメソッドは、アクションを実行せずに戻ることができます。
IOperationBehavior オブジェクトは通常、サービス アプリケーションの System.ServiceModel.Dispatcher..::.DispatchOperation オブジェクト、および、クライアント アプリケーションの System.ServiceModel.Dispatcher..::.ClientOperation オブジェクトのさまざまなプロパティにアクセスするために使用します。
一般に、開発者はまず機能拡張ポイントを調べてアプリケーション シナリオに適したカスタマイズ オプションを決定してから、そのカスタマイズを適切なスコープで実装します。たとえば、System.ServiceModel.Description..::.IServiceBehavior オブジェクトを使用してサービス全体のすべてのメッセージに対するカスタマイズを挿入したり、System.ServiceModel.Description..::.IContractBehavior オブジェクトを使用して特定のコントラクト全体のすべてのメッセージに対するカスタマイズを挿入したりできます。使用できるさまざまなプロパティおよびカスタマイズの説明については、「ServiceHost とサービス モデル レイヤの拡張」を参照してください。
カスタマイズを設定して必要なカスタマイズ インターフェイスを実装し、IOperationBehavior が適切なスコープのカスタマイズであることを確認したら、Windows Communication Foundation (WCF) ランタイムにカスタマイズを挿入する必要があります。これは、IOperationBehavior を実装し、ランタイムに操作の動作を追加することによって行います。
ランタイムに IOperationBehavior を追加するには、2 つの方法があります。
想定されているサービス カスタマイズ タスクを実行するには、ICommunicationObject..::.Open メソッドが System.ServiceModel..::.ServiceHost で呼び出されるときに行われるサービス ランタイムの構築の前に、IOperationBehavior オブジェクトを OperationDescription..::.Behaviors プロパティに追加しておく必要があります。クライアント カスタマイズ タスクを実行するには、ChannelFactory<(Of <(TChannel>)>) で ChannelFactory<(Of <(TChannel>)>)..::.CreateChannel メソッドまたは ICommunicationObject..::.Open メソッドを呼び出す前に、IOperationBehavior オブジェクトを OperationDescription..::.Behaviors プロパティに追加しておく必要があります。
操作の動作は、個々の操作のスコープ内のランタイムに簡単にアクセスできるように設計されていますが、親ランタイム オブジェクトにアクセスすることにより、より広いスコープのランタイムにアクセスできます。