クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
.NET 開発
.NET Framework 3.5
.NET Framework 3.5

  低帯域幅での表示をオンにする
このページは次のバージョンについて記述しています。
Microsoft Visual Studio 2008/.NET Framework 3.5

その他のバージョンについては、以下の情報を参照してください。
.NET Framework クラス ライブラリ
IOperationBehavior インターフェイス

更新 : 2007 年 11 月

サービスまたはクライアント アプリケーションで操作のランタイム動作を拡張するために使用できるメソッドを実装します。

名前空間 :  System.ServiceModel.Description
アセンブリ :  System.ServiceModel (System.ServiceModel.dll 内)
Visual Basic (宣言)
Public Interface IOperationBehavior
Visual Basic (使用法)
Dim instance As IOperationBehavior
C#
public interface IOperationBehavior
Visual C++
public interface class IOperationBehavior
J#
public interface IOperationBehavior
JScript
public interface IOperationBehavior

クライアントまたはサービス アプリケーションのいずれかで、操作全体にわたる実行の一部の側面をアプリケーション レベルで変更、確認、または拡張するには、IOperationBehavior インターフェイスを実装します。

  • AddBindingParameters メソッドを使用して、実行時にカスタム データを渡して、バインディングがカスタム動作をサポートできるようにします。

  • ApplyClientBehavior メソッドを使用して、クライアント アプリケーションでクライアント ディスパッチャを変更または確認したり、クライアント ディスパッチャに拡張機能を挿入したりできます。

  • ApplyDispatchBehavior メソッドを使用して、サービス アプリケーションで操作全体にわたる実行を変更または確認したり、操作全体にわたる実行に拡張機能を挿入したりできます。

  • Validate メソッドを使用して、OperationDescription が特定の要件を満たしていることを確認します。このメソッドを使用して、操作で特定の構成設定が有効になっているかどうか、操作が特定の機能をサポートしているかどうかなどの要件を確認できます。

IOperationBehavior オブジェクトは、これらのメソッドをどれでも使用できますが、通常は、重要なメソッドは 1 つだけです。この場合、使用されないメソッドは、アクションを実行せずに戻ることができます。

ms599105.alert_note(ja-jp,VS.90).gifメモ :

すべての IOperationBehavior メソッドは OperationDescription オブジェクトをパラメータとして渡します。このパラメータは、検査にのみ使用されます。OperationDescription オブジェクトを変更した場合、実行の動作は未定義になります。

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 つの方法があります。

  • サービス ホスト (サービス アプリケーションの場合) またはチャネル ファクトリ (クライアント アプリケーションの場合) を開く前に、プログラムを使用して、OperationDescription..::.Behaviors プロパティに操作のカスタム動作を追加します。

  • カスタム属性を使用して動作を追加します。

想定されているサービス カスタマイズ タスクを実行するには、ICommunicationObject..::.Open メソッドが System.ServiceModel..::.ServiceHost で呼び出されるときに行われるサービス ランタイムの構築の前に、IOperationBehavior オブジェクトを OperationDescription..::.Behaviors プロパティに追加しておく必要があります。クライアント カスタマイズ タスクを実行するには、ChannelFactory<(Of <(TChannel>)>)ChannelFactory<(Of <(TChannel>)>)..::.CreateChannel メソッドまたは ICommunicationObject..::.Open メソッドを呼び出す前に、IOperationBehavior オブジェクトを OperationDescription..::.Behaviors プロパティに追加しておく必要があります。

操作の動作は、個々の操作のスコープ内のランタイムに簡単にアクセスできるように設計されていますが、親ランタイム オブジェクトにアクセスすることにより、より広いスコープのランタイムにアクセスできます。

インスペクタが操作で呼び出されたときにコンソールに書き込みを行う System.ServiceModel.Dispatcher..::.IParameterInspector の実装を次のコード例に示します。このカスタマイズは、System.ServiceModel.Dispatcher..::.DispatchOperation または System.ServiceModel.Dispatcher..::.ClientOperation にのみ結び付けることができるので、通常は操作の動作によって挿入されます。

C#
#region IParameterInspector Members
public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState)
{
  Console.WriteLine(
    "IParameterInspector.AfterCall called for {0} with return value {1}.", 
    operationName, 
    returnValue.ToString()
  );
}

public object BeforeCall(string operationName, object[] inputs)
{
  Console.WriteLine("IParameterInspector.BeforeCall called for {0}.", operationName);
  return null;
}

操作の動作がパラメータ インスペクタをランタイムに結び付ける方法を次のコード例に示します。

C#
#region IOperationBehavior Members
public void AddBindingParameters(
  OperationDescription operationDescription, BindingParameterCollection bindingParameters
)
{ return; }

public void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation)
{
  clientOperation.ParameterInspectors.Add(new Inspector());
}

public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
{
  dispatchOperation.ParameterInspectors.Add(new Inspector());
}

public void Validate(OperationDescription operationDescription){ return; }

Windows Vista, Windows XP SP2, Windows Server 2003

.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

.NET Framework

サポート対象 : 3.5、3.0
コミュニティ コンテンツ   コミュニティ コンテンツとは
新しいコンテンツの追加 RSS  注釈
Processing
© 2009 Microsoft Corporation. All rights reserved. 使用条件  |  商標  |  プライバシー
Page view tracker