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.

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

La première étape consiste à implémenter l'inspecteur de message.

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

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

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

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

  • 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é.

  • Utilisez la méthode ApplyClientBehavior pour modifier, examiner ou insérer des extensions à un point de terminaison d'une application cliente.

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

  • Utilisez la méthode Validate pour confirmer qu’un ServiceEndpoint remplit les exigences requises. 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 spécifications.

IEndpointBehavior les objets peuvent utiliser l’une de ces méthodes, mais souvent une seule est importante ; dans ce cas, les méthodes inutilisées peuvent retourner, sans effectuer d’action.

Notes

Toutes les méthodes IEndpointBehavior passent un objet ServiceEndpoint comme paramètre. 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.

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

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.

Une fois qu’une personnalisation a été décidée (et que l’interface de personnalisation a été implémentée si nécessaire) et que le IEndpointBehavior a été décidé comme l’étendue appropriée de la personnalisation, la personnalisation doit être insérée dans le runtime Windows Communication Foundation (WCF) en implémentant et en IEndpointBehavior ajoutant le comportement du point de terminaison au runtime.

Il existe deux méthodes pour ajouter le comportement à l'exécution :

  • 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).

  • Configurez le comportement à l'aide d'un fichier de configuration de l'application. Pour plus d’informations, consultez <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. 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>.

Méthodes

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

ApplyClientBehavior(ServiceEndpoint, ClientRuntime)

Implémente une modification ou une extension du client sur l’intégralité d’un point de terminaison.

ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

Implémente une modification ou une extension du service sur l’intégralité du point de terminaison.

Validate(ServiceEndpoint)

Effectuez une implémentation pour confirmer que le point de terminaison répond à certains critères prévus.

S’applique à