IOperationBehavior Interface

Définition

Implémente des méthodes qui permettent d'étendre un comportement d'exécution pour une opération, que ce soit pour une application cliente ou de service.

public interface class IOperationBehavior
public interface IOperationBehavior
type IOperationBehavior = interface
Public Interface IOperationBehavior
Dérivé

Exemples

L'exemple de code suivant montre une implémentation de l'System.ServiceModel.Dispatcher.IParameterInspector qui écrit sur la console lors de l'appel à l'inspecteur sur une opération. Cette personnalisation ne peut être attachée à l'System.ServiceModel.Dispatcher.DispatchOperation ou l'System.ServiceModel.Dispatcher.ClientOperation et est par conséquent souvent insérée par un comportement d'opération.

#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;
}
#Region "IParameterInspector Members"
    Public Sub AfterCall(ByVal operationName As String, ByVal outputs() As Object, ByVal returnValue As Object, _
                         ByVal correlationState As Object) Implements IParameterInspector.AfterCall
        Console.WriteLine("IParameterInspector.AfterCall called for {0} with return value {1}.", _
                          operationName, returnValue.ToString())
    End Sub

    Public Function BeforeCall(ByVal operationName As String, ByVal inputs() As Object) As Object Implements _
    IParameterInspector.BeforeCall
        Console.WriteLine("IParameterInspector.BeforeCall called for {0}.", operationName)
        Return Nothing
    End Function

L'exemple de code suivant montre comment le comportement d'opération attache l'inspecteur de paramètre à l'exécution.

#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; }
#Region "IOperationBehavior Members"
    Public Sub AddBindingParameters(ByVal operationDescription As OperationDescription, _
                                    ByVal bindingParameters As BindingParameterCollection) Implements _
                                    IOperationBehavior.AddBindingParameters
        Return
    End Sub

    Public Sub ApplyClientBehavior(ByVal operationDescription As OperationDescription, ByVal _
                                   clientOperation As ClientOperation) Implements IOperationBehavior.ApplyClientBehavior
        clientOperation.ParameterInspectors.Add(New Inspector())
    End Sub

    Public Sub ApplyDispatchBehavior(ByVal operationDescription As OperationDescription, ByVal dispatchOperation As  _
                                     DispatchOperation) Implements IOperationBehavior.ApplyDispatchBehavior
        dispatchOperation.ParameterInspectors.Add(New Inspector())
    End Sub

Public Sub Validate(ByVal operationDescription As OperationDescription) Implements IOperationBehavior.Validate
    Return
End Sub

Remarques

Implémentez l'interface IOperationBehavior pour modifier, examiner ou étendre certains aspects de l'exécution à l'échelle de l'opération 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 dans le répartiteur client d'une application cliente.

  • Utilisez la méthode ApplyDispatchBehavior pour modifier, examiner ou insérer des extensions dans l’exécution à l’échelle de l’opération dans une application de service.

  • Utilisez la méthode Validate pour confirmer qu’un OperationDescription remplit les exigences requises. Elle permet d'assurer qu'une opération dispose d'un certain paramètre de configuration activé, qu'elle prend en charge une fonctionnalité particulière et d'autres spécifications.

IOperationBehavior 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, en n’effectuant aucune action.

Notes

Toutes les méthodes IOperationBehavior passent un objet OperationDescription comme paramètre. Ce paramètre est présenté à titre d'examen uniquement ; si vous modifiez l'objet OperationDescription, le comportement d'exécution n'est pas défini.

En général, les objets IOperationBehavior permettent d'accéder aux différentes propriétés de l'objet System.ServiceModel.Dispatcher.DispatchOperation d'une application de service et à l'objet System.ServiceModel.Dispatcher.ClientOperation d'une application cliente.

En général, le développeur examine tout d’abord les points d’extensibilité pour déterminer l’option de personnalisation qui convient au scénario d’application, puis implémente la personnalisation au niveau de la portée appropriée. Par exemple, les objets System.ServiceModel.Description.IServiceBehavior peuvent insérer des personnalisations pour tous les messages dans l'intégralité d'un service et les objets System.ServiceModel.Description.IContractBehavior peuvent insérer des personnalisations pour tous les messages sur l'intégralité d'un contrat spécifique, etc. 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 la personnalisation définie (et l’interface de personnalisation implémentée si nécessaire) et IOperationBehavior l’étendue appropriée de la personnalisation, la personnalisation doit être insérée dans le runtime Windows Communication Foundation (WCF) en implémentant IOperationBehavior et en ajoutant le comportement d’opération au runtime.

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

  • Par programme, ajoutez le comportement d'opération personnalisé à la propriété OperationDescription.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).

  • Ajoutez le comportement à l'aide d'un attribut personnalisé.

Pour effectuer la tâche de personnalisation de service à laquelle il est destiné, l’objet IOperationBehavior doit être ajouté à la propriété OperationDescription.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 IOperationBehavior doit être ajouté à la propriété OperationDescription.Behaviors avant l’appel aux méthodes ChannelFactory<TChannel>.CreateChannel ou ICommunicationObject.Open sur ChannelFactory<TChannel>.

Bien que le comportement d'opération soit conçu pour un accès simplifié à l'exécution au niveau de la portée d'une opération individuelle, vous pouvez accéder à l'exécution au niveau d'une plus grande portée en accédant à l'objet d'exécution parent.

Méthodes

AddBindingParameters(OperationDescription, 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(OperationDescription, ClientOperation)

Implémente une modification ou une extension du client sur l’intégralité d’une opération.

ApplyDispatchBehavior(OperationDescription, DispatchOperation)

Implémente une modification ou une extension du client sur l’intégralité d’une opération.

Validate(OperationDescription)

Effectuez une implémentation pour confirmer que l'opération répond à certains critères prévus.

S’applique à