IEndpointBehavior IEndpointBehavior IEndpointBehavior IEndpointBehavior Interface

定義

サービスまたはクライアント アプリケーションでエンドポイントのランタイム動作を拡張するために使用できるメソッドを実装します。Implements methods that can be used to extend run-time behavior for an endpoint in either a service or client application.

public interface class IEndpointBehavior
public interface IEndpointBehavior
type IEndpointBehavior = interface
Public Interface IEndpointBehavior
派生

サービス アプリケーションで System.ServiceModel.Dispatcher.IDispatchMessageInspector オブジェクトを追加するエンドポイント動作の実装を次のコード例に示します。The following code example shows the implementation of an endpoint behavior that adds an System.ServiceModel.Dispatcher.IDispatchMessageInspector object in a service application. この場合、EndpointBehaviorMessageInspector クラスは、受信および送信メッセージを調べるための System.ServiceModel.Dispatcher.IDispatchMessageInspector、動作が適用されるすべてのエンドポイントの検査システムにインスペクター クラスを挿入するための IEndpointBehavior インターフェイス、およびアプリケーション構成ファイルを使用してメッセージ インスペクターの動作ができるようにするための System.ServiceModel.Configuration.BehaviorExtensionElement を実装します。In this case, the EndpointBehaviorMessageInspector class implements System.ServiceModel.Dispatcher.IDispatchMessageInspector to inspect the inbound and outbound message, the IEndpointBehavior interface to insert the inspector class into the inspection system for all endpoints to which the behavior applies, and the System.ServiceModel.Configuration.BehaviorExtensionElement to enable the message inspector behavior using an application configuration file.

最初にメッセージ インスペクターを実装します。The first step is to implement the message inspector.

// 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.");
}

メッセージ インスペクターを ApplyDispatchBehavior プロパティに追加する DispatchRuntime.MessageInspectors メソッドの使用法を次のコード例に示します。The next code example shows the use of the ApplyDispatchBehavior method to add the message inspector to the DispatchRuntime.MessageInspectors property.

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

public void ApplyClientBehavior(ServiceEndpoint serviceEndpoint, ClientRuntime behavior)
{
  behavior.MessageInspectors.Add(new EndpointBehaviorMessageInspector());
}

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

public void Validate(ServiceEndpoint serviceEndpoint)
{
  return;
}

構成ファイルからメッセージ インスペクター動作を使用できるようにするための System.ServiceModel.Configuration.BehaviorExtensionElement の実装を次のコード例に示します。The following code example shows the implementation of System.ServiceModel.Configuration.BehaviorExtensionElement in order to enable use of the message inspector behavior from a configuration file.

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

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

最後に、前の例を構成から使用できるようにする方法を次の構成ファイルに示します。Finally, the following configuration file shows how the preceding example can be used from configuration.

<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>

注釈

クライアントまたはサービス アプリケーションのいずれかで、エンドポイント全体にわたる実行の一部の側面をアプリケーション レベルで変更、確認、または拡張するには、IEndpointBehavior インターフェイスを実装します。Implement the IEndpointBehavior interface to modify, examine, or extend some aspect of endpoint-wide execution at the application level for either client or service applications.

  • AddBindingParameters メソッドを使用して、実行時にカスタム データを渡して、バインディングがカスタム動作をサポートできるようにします。Use the AddBindingParameters method to pass custom data at runtime to enable bindings to support custom behavior.

  • ApplyClientBehavior メソッドを使用して、クライアント アプリケーションでエンドポイントを変更または確認したり、エンドポイントに拡張機能を挿入したりできます。Use the ApplyClientBehavior method to modify, examine, or insert extensions to an endpoint in a client application.

  • ApplyDispatchBehavior メソッドを使用して、サービス アプリケーションでエンドポイント全体にわたる実行を変更または確認し、エンドポイント全体にわたる実行に拡張機能を挿入できます。Use the ApplyDispatchBehavior method to modify, examine, or insert extensions to endpoint-wide execution in a service application.

  • Validate メソッドを使用して、ServiceEndpoint が特定の要件を満たしていることを確認します。Use the Validate method to confirm that a ServiceEndpoint meets specific requirements. このメソッドを使用して、エンドポイントで特定の構成設定が有効になっているかどうか、エンドポイントが特定の機能をサポートしているかどうかなどの要件を確認できます。This can be used to ensure that an endpoint has a certain configuration setting enabled, supports a particular feature and other requirements.

IEndpointBehavior オブジェクトは、これらのメソッドをどれでも使用できますが、通常は、重要なメソッドは 1 つだけです。この場合、使用されないメソッドは、アクションを実行せずに戻ることができます。IEndpointBehavior objects can make use of any of these methods, but often only one is important; in such cases, the unused methods can return, performing no action.

注意

すべての IEndpointBehavior メソッドは ServiceEndpoint オブジェクトをパラメーターとして渡します。All of the IEndpointBehavior methods pass a ServiceEndpoint object as a parameter. このパラメーターは、検査にのみ使用されます。ServiceEndpoint オブジェクトを変更した場合、実行の動作は未定義になります。This parameter is for examination only; if you modify the ServiceEndpoint object the execution behavior is undefined.

IEndpointBehavior オブジェクトは通常、サービス アプリケーションの System.ServiceModel.Dispatcher.DispatchRuntimeSystem.ServiceModel.Dispatcher.DispatchOperationSystem.ServiceModel.Dispatcher.EndpointDispatcherSystem.ServiceModel.Dispatcher.ChannelDispatcher の各オブジェクト、および、クライアント アプリケーションの System.ServiceModel.Dispatcher.ClientRuntimeSystem.ServiceModel.Dispatcher.ClientOperation のさまざまなプロパティにアクセスするために使用します。IEndpointBehavior objects are typically used to access the various properties of the System.ServiceModel.Dispatcher.DispatchRuntime, System.ServiceModel.Dispatcher.DispatchOperation, System.ServiceModel.Dispatcher.EndpointDispatcher, and System.ServiceModel.Dispatcher.ChannelDispatcher objects in a service application and the System.ServiceModel.Dispatcher.ClientRuntime and System.ServiceModel.Dispatcher.ClientOperation in a client application. また、ClientRuntime.CallbackDispatchRuntime プロパティと DispatchRuntime.CallbackClientRuntime プロパティをそれぞれ使用して、双方向クライアントと双方向サービスのプロパティにアクセスすることもできます。In addition, you can access the properties of duplex clients and services using the ClientRuntime.CallbackDispatchRuntime and DispatchRuntime.CallbackClientRuntime properties, respectively.

さまざまなプロパティおよび設定できるカスタマイズについては、次を参照してください。 Extending ServiceHost とサービス モデル レイヤーします。For a description of the various properties and customizations available, see Extending ServiceHost and the Service Model Layer.

カスタマイズがあることを確認 (および必要に応じてカスタマイズ インターフェイスが実装される) と、IEndpointBehaviorされたことを決定しましたが、適切なスコープのカスタマイズ、Windows の通信には、カスタマイズを挿入する必要があります実装することによって foundation (WCF) ランタイムIEndpointBehaviorランタイムにエンドポイント動作を追加します。Once a customization has been decided upon (and the customization interface implemented if necessary) and the IEndpointBehavior has been decided is the appropriate scope of customization, the customization must be inserted into the Windows Communication Foundation (WCF) runtime by implementing IEndpointBehavior and adding the endpoint behavior to the runtime.

ランタイムに動作を追加するには、2 つの方法があります。There are two ways to add the behavior to the runtime:

  • サービス ホスト (サービス アプリケーションの場合) またはチャネル ファクトリ (クライアント アプリケーションの場合) を開く前に、プログラムを使用して、Behaviors プロパティにエンドポイントのカスタム動作を追加します。Programmatically add the custom endpoint behavior to the Behaviors property prior to the opening of the service host (in a service application) or the channel factory (in a client application).

  • アプリケーション構成ファイルを使用して動作を構成します。Configure the behavior using an application configuration file. 詳細については、次を参照してください。 <behaviorExtensions>します。For details, see <behaviorExtensions>.

想定されているサービス カスタマイズ タスクを実行するには、IEndpointBehavior メソッドが ServiceEndpoint.Behaviors で呼び出されるときに行われるサービス ランタイムの構築の前に、ICommunicationObject.Open オブジェクトを System.ServiceModel.ServiceHost プロパティに追加しておく必要があります。To perform the service customization task for which it is intended, the IEndpointBehavior object must be added to the ServiceEndpoint.Behaviors property prior to the construction of the service runtime, which occurs when ICommunicationObject.Open method is called on System.ServiceModel.ServiceHost. クライアント カスタマイズ タスクを実行するには、IEndpointBehaviorServiceEndpoint.Behaviors メソッドまたは ChannelFactory<TChannel>.CreateChannel メソッドを呼び出す前に、ICommunicationObject.Open オブジェクトを ChannelFactory<TChannel> プロパティに追加しておく必要があります。To perform a client customization task, the IEndpointBehavior object must be added to the ServiceEndpoint.Behaviors property before calling the ChannelFactory<TChannel>.CreateChannel method or the ICommunicationObject.Open method on ChannelFactory<TChannel>.

メソッド

AddBindingParameters(ServiceEndpoint, BindingParameterCollection) AddBindingParameters(ServiceEndpoint, BindingParameterCollection) AddBindingParameters(ServiceEndpoint, BindingParameterCollection) AddBindingParameters(ServiceEndpoint, BindingParameterCollection)

実行時にバインドにデータを渡して、バインドがカスタム動作をサポートできるようにするために実装します。Implement to pass data at runtime to bindings to support custom behavior.

ApplyClientBehavior(ServiceEndpoint, ClientRuntime) ApplyClientBehavior(ServiceEndpoint, ClientRuntime) ApplyClientBehavior(ServiceEndpoint, ClientRuntime) ApplyClientBehavior(ServiceEndpoint, ClientRuntime)

エンドポイント全体にわたってクライアントの変更または拡張を実装します。Implements a modification or extension of the client across an endpoint.

ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

エンドポイント全体にわたってサービスの変更または拡張を実装します。Implements a modification or extension of the service across an endpoint.

Validate(ServiceEndpoint) Validate(ServiceEndpoint) Validate(ServiceEndpoint) Validate(ServiceEndpoint)

エンドポイントが指定した基準を満たしていることを確認するために実装します。Implement to confirm that the endpoint meets some intended criteria.

適用対象