IEndpointBehavior IEndpointBehavior IEndpointBehavior IEndpointBehavior Interface

Définition

Implémente des méthodes qui permettent d'étendre un comportement d'exécution pour un point de terminaison, que ce soit pour une application cliente ou de service.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
Dérivé

Exemples

L'exemple de code suivant montre l'implémentation d'un comportement de point de terminaison qui ajoute un objet System.ServiceModel.Dispatcher.IDispatchMessageInspector dans une application de service.The following code example shows the implementation of an endpoint behavior that adds an System.ServiceModel.Dispatcher.IDispatchMessageInspector object in a service application. Dans ce cas, la classe EndpointBehaviorMessageInspector implémente System.ServiceModel.Dispatcher.IDispatchMessageInspector pour inspecter le message entrant et sortant, l'interface IEndpointBehavior pour insérer la classe Inspector dans le système d'inspection pour tous les points de terminaison auxquels s'applique le comportement et l'System.ServiceModel.Configuration.BehaviorExtensionElement pour activer le comportement d'un inspecteur de message à l'aide d'un fichier de configuration de l'application.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.

La première étape consiste à implémenter l'inspecteur de message.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.");
}

L'exemple de code suivant montre l'utilisation de la méthode ApplyDispatchBehavior pour ajouter l'inspecteur de message à la propriété 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;
}

L'exemple de code suivant montre l'implémentation de l'System.ServiceModel.Configuration.BehaviorExtensionElement pour activer l'utilisation du comportement d'un inspecteur de message à partir d'un fichier de configuration.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();
}

Enfin, le fichier de configuration suivant montre comment l'exemple précédent peut être utilisé à partir de la configuration.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>

Remarques

Implémentez l'interface IEndpointBehavior pour modifier, examiner ou étendre certains aspects de l'exécution à l'échelle du point de terminaison au niveau de l'application, que ce soit pour des applications clientes ou de service.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.

  • Utilisez la méthode AddBindingParameters pour passer des données personnalisées lors de l’exécution pour permettre aux liaisons de prendre en charge un comportement personnalisé.Use the AddBindingParameters method to pass custom data at runtime to enable bindings to support custom behavior.

  • Utilisez la méthode ApplyClientBehavior pour modifier, examiner ou insérer des extensions à un point de terminaison d'une application cliente.Use the ApplyClientBehavior method to modify, examine, or insert extensions to an endpoint in a client application.

  • Utilisez la méthode ApplyDispatchBehavior pour modifier, examiner ou insérer des extensions à l’exécution à l’échelle du point de terminaison d’une application de service.Use the ApplyDispatchBehavior method to modify, examine, or insert extensions to endpoint-wide execution in a service application.

  • Utilisez la méthode Validate pour confirmer qu’un ServiceEndpoint remplit les exigences requises.Use the Validate method to confirm that a ServiceEndpoint meets specific requirements. Elle permet d’assurer qu’un point de terminaison dispose d’un certain paramètre de configuration activé, qu’il prend en charge une fonctionnalité particulière et d’autres exigences.This can be used to ensure that an endpoint has a certain configuration setting enabled, supports a particular feature and other requirements.

Les objets IEndpointBehavior peuvent utiliser chacune de ces méthodes mais souvent, seule l'une d'elles est importante. Dans ce cas, les méthodes inutilisées ne retournent aucun élément, n'effectuant ainsi aucune action.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.

Notes

Toutes les méthodes IEndpointBehavior passent un objet ServiceEndpoint comme paramètre.All of the IEndpointBehavior methods pass a ServiceEndpoint object as a parameter. Ce paramètre est présenté à titre d'examen uniquement ; si vous modifiez l'objet ServiceEndpoint, le comportement d'exécution n'est pas défini.This parameter is for examination only; if you modify the ServiceEndpoint object the execution behavior is undefined.

En général, les objets IEndpointBehavior permettent d'accéder aux différentes propriétés des objets System.ServiceModel.Dispatcher.DispatchRuntime, System.ServiceModel.Dispatcher.DispatchOperation, System.ServiceModel.Dispatcher.EndpointDispatcher et System.ServiceModel.Dispatcher.ChannelDispatcher d'une application de service et à l'System.ServiceModel.Dispatcher.ClientRuntime et à l'System.ServiceModel.Dispatcher.ClientOperation d'une application cliente.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. De plus, vous pouvez accéder aux propriétés de clients et services duplex, respectivement à l'aide des propriétés ClientRuntime.CallbackDispatchRuntime et DispatchRuntime.CallbackClientRuntime.In addition, you can access the properties of duplex clients and services using the ClientRuntime.CallbackDispatchRuntime and DispatchRuntime.CallbackClientRuntime properties, respectively.

Pour obtenir une description des différentes propriétés et personnalisations disponibles, consultez extension de ServiceHost et de la couche de modèle de service.For a description of the various properties and customizations available, see Extending ServiceHost and the Service Model Layer.

Une fois qu’une personnalisation a été décidée (et que l’interface de personnalisation a été implémentée IEndpointBehavior si nécessaire) et que le a été déterminé comme étant la portée appropriée de personnalisation, la personnalisation doit être insérée dans la communication Windows. Foundation (WCF) en implémentant IEndpointBehavior et en ajoutant le comportement de point de terminaison au Runtime.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.

Il existe deux méthodes pour ajouter le comportement à l'exécution :There are two ways to add the behavior to the runtime:

  • Par programme, ajoutez le comportement de point de terminaison personnalisé à la propriété Behaviors avant l'ouverture de l'hôte de service (dans une application de service) ou de la fabrique de canal (dans une application cliente).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).

  • Configurez le comportement à l'aide d'un fichier de configuration de l'application.Configure the behavior using an application configuration file. Pour plus d’informations, consultez <BehaviorExtensions>.For details, see <behaviorExtensions>.

Pour effectuer la tâche de personnalisation de service à laquelle il est destiné, l’objet IEndpointBehavior doit être ajouté à la propriété ServiceEndpoint.Behaviors avant la construction de l’exécution de service, qui se produit lors de l’appel à la méthode ICommunicationObject.Open sur 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. Pour effectuer une tâche de personnalisation cliente, l'objet IEndpointBehavior doit être ajouté à la propriété ServiceEndpoint.Behaviors avant l'appel aux méthodes ChannelFactory<TChannel>.CreateChannel ou ICommunicationObject.Open sur 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>.

Méthodes

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

Effectuez une implémentation pour passer des données au moment de l’exécution à des liaisons afin de prendre en charge un comportement personnalisé.Implement to pass data at runtime to bindings to support custom behavior.

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

Implémente une modification ou une extension du client sur l’intégralité d’un point de terminaison.Implements a modification or extension of the client across an endpoint.

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

Implémente une modification ou une extension du service sur l’intégralité du point de terminaison.Implements a modification or extension of the service across an endpoint.

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

Effectuez une implémentation pour confirmer que le point de terminaison répond à certains critères prévus.Implement to confirm that the endpoint meets some intended criteria.

S’applique à