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

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

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

更新 : 2007 年 11 月

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

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

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

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

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

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

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

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

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

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

IEndpointBehavior オブジェクトは通常、サービス アプリケーションの System.ServiceModel.Dispatcher..::.DispatchRuntimeSystem.ServiceModel.Dispatcher..::.DispatchOperationSystem.ServiceModel.Dispatcher..::.EndpointDispatcherSystem.ServiceModel.Dispatcher..::.ChannelDispatcher の各オブジェクト、および、クライアント アプリケーションの System.ServiceModel.Dispatcher..::.ClientRuntimeSystem.ServiceModel.Dispatcher..::.ClientOperation のさまざまなプロパティにアクセスするために使用します。また、ClientRuntime..::.CallbackDispatchRuntime プロパティと DispatchRuntime..::.CallbackClientRuntime プロパティをそれぞれ使用して、双方向クライアントと双方向サービスのプロパティにアクセスすることもできます。

使用できるさまざまなプロパティおよびカスタマイズの説明については、「ServiceHost とサービス モデル レイヤの拡張」を参照してください。

カスタマイズを設定して必要なカスタマイズ インターフェイスを実装し、IEndpointBehavior が適切なスコープのカスタマイズであることを確認したら、Windows Communication Foundation (WCF) ランタイムにカスタマイズを挿入する必要があります。これは、IEndpointBehavior を実装し、ランタイムにエンドポイントの動作を追加することによって行います。

ランタイムに動作を追加するには、2 つの方法があります。

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

  • アプリケーション構成ファイルを使用して動作を構成します。詳細については、「<behaviorExtensions>」を参照してください。

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

サービス アプリケーションで System.ServiceModel.Dispatcher..::.IDispatchMessageInspector オブジェクトを追加するエンドポイント動作の実装を次のコード例に示します。この場合、EndpointBehaviorMessageInspector クラスは、受信および送信メッセージを調べるための System.ServiceModel.Dispatcher..::.IDispatchMessageInspector、動作が適用されるすべてのエンドポイントの検査システムにインスペクタ クラスを挿入するための IEndpointBehavior インターフェイス、およびアプリケーション構成ファイルを使用してメッセージ インスペクタの動作ができるようにするための System.ServiceModel.Configuration..::.BehaviorExtensionElement を実装します。

最初にメッセージ インスペクタを実装します。

C#
// IDispatchMessageInspector Members

public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel, InstanceContext instanceContext)
{
  Console.WriteLine("AfterReceiveRequest called.");
  return null;
}

public void BeforeSendReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
{
  Console.WriteLine("BeforeSendReply called.");
}

メッセージ インスペクタを DispatchRuntime..::.MessageInspectors プロパティに追加する ApplyDispatchBehavior メソッドの使用法を次のコード例に示します。

C#
// IEndpointBehavior Members
public void AddBindingParameters(ServiceEndpoint serviceEndpoint, System.ServiceModel.Channels.BindingParameterCollection bindingParameters)
{
  return;
}

public void ApplyClientBehavior(ServiceEndpoint serviceEndpoint, ClientRuntime behavior)
{
  throw new Exception("The EndpointBehaviorMessageInspector is not used in client applications.");
}

public void ApplyDispatchBehavior(ServiceEndpoint serviceEndpoint, EndpointDispatcher endpointDispatcher)
{
  endpointDispatcher.DispatchRuntime.MessageInspectors.Add(new EndpointBehaviorMessageInspector());
}

public void Validate(ServiceEndpoint serviceEndpoint)
{
  return;
}

構成ファイルからメッセージ インスペクタ動作を使用できるようにするための System.ServiceModel.Configuration..::.BehaviorExtensionElement の実装を次のコード例に示します。

C#
// BehaviorExtensionElement members
public override Type BehaviorType
{
  get { return typeof(EndpointBehaviorMessageInspector); }
}

protected override object CreateBehavior()
{
  return new EndpointBehaviorMessageInspector();
}

最後に、前の例を構成から使用できるようにする方法を次の構成ファイルに示します。

<configuration>
  <system.serviceModel>
    <services>
      <service 
        name="Microsoft.WCF.Documentation.SampleService"
        behaviorConfiguration="metadataSupport"
      >
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8080/ServiceMetadata" />
          </baseAddresses>
        </host>
        <endpoint
          address="/SampleService"
          binding="wsHttpBinding"
          behaviorConfiguration="withMessageInspector" 
          contract="Microsoft.WCF.Documentation.ISampleService"
        />
        <endpoint
           address="mex"
           binding="mexHttpBinding"
           contract="IMetadataExchange"
        />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
      <behavior name="metadataSupport">
        <serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
      </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="withMessageInspector">
          <endpointMessageInspector />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <extensions>
      <behaviorExtensions>
        <add 
          name="endpointMessageInspector"
          type="Microsoft.WCF.Documentation.EndpointBehaviorMessageInspector, HostApplication, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
        />
      </behaviorExtensions>
    </extensions>
  </system.serviceModel>
</configuration>

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