IOperationBehavior Interface

Definição

Implementa métodos que podem ser usados para estender o comportamento em tempo de execução de uma operação, seja num serviço ou numa aplicação cliente.

public interface class IOperationBehavior
public interface IOperationBehavior
type IOperationBehavior = interface
Public Interface IOperationBehavior
Derivado

Exemplos

O exemplo de código seguinte mostra uma implementação de System.ServiceModel.Dispatcher.IParameterInspector que escreve na consola quando o inspetor é invocado numa operação. Esta personalização só pode ser associada ao System.ServiceModel.Dispatcher.DispatchOperation ou System.ServiceModel.Dispatcher.ClientOperation e, por isso, é normalmente inserida por um comportamento de operação.

#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

O exemplo de código seguinte mostra como o comportamento operacional associa o inspetor de parâmetros ao tempo de execução.

#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

Observações

Implemente a IOperationBehavior interface para modificar, examinar ou estender algum aspeto da execução operacional a nível da aplicação para aplicações cliente ou de serviço.

  • Use o AddBindingParameters método para passar dados personalizados em tempo de execução para permitir que as ligações suportem comportamentos personalizados.

  • Use o ApplyClientBehavior método para modificar, examinar ou inserir extensões a um despachante cliente numa aplicação cliente.

  • Use o ApplyDispatchBehavior método para modificar, examinar ou inserir extensões à execução em toda a operação numa aplicação de serviço.

  • Use o Validate método para confirmar que o A OperationDescription cumpre requisitos específicos. Isto pode ser usado para garantir que uma operação tem uma determinada configuração ativada, suporta uma funcionalidade específica e outros requisitos.

IOperationBehavior Os objetos podem utilizar qualquer um destes métodos, mas muitas vezes apenas um é importante; nesses casos, os métodos não utilizados podem regressar, sem realizar qualquer ação.

Note

Todos os IOperationBehavior métodos passam um OperationDescription objeto como parâmetro. Este parâmetro é apenas para exame; Se modificar o OperationDescription objeto, o comportamento de execução é indefinido.

IOperationBehavior Os objetos são normalmente usados para aceder às várias propriedades do System.ServiceModel.Dispatcher.DispatchOperation objeto numa aplicação de serviço e ao System.ServiceModel.Dispatcher.ClientOperation objeto numa aplicação cliente.

Normalmente, o programador revê primeiro os pontos de extensibilidade para determinar qual a opção de personalização que se adequa ao cenário da aplicação e depois implementa a personalização no âmbito apropriado. Por exemplo, System.ServiceModel.Description.IServiceBehavior os objetos podem inserir personalizações para todas as mensagens de um serviço inteiro e System.ServiceModel.Description.IContractBehavior os objetos podem inserir personalizações para todas as mensagens de um contrato específico, e assim sucessivamente. Para uma descrição das várias propriedades e personalizações disponíveis, veja Extensão do ServiceHost e a Camada do Modelo de Serviço.

Uma vez decidida uma personalização (e a interface de personalização implementada, se necessário) e o IOperationBehavior for o âmbito adequado de personalização, a personalização deve ser inserida no runtime Windows Communication Foundation (WCF) implementando IOperationBehavior e adicionando o comportamento operacional ao runtime.

Existem duas formas de adicionar o IOperationBehavior ao tempo de execução:

  • Adicione programaticamente o comportamento operacional personalizado à OperationDescription.Behaviors propriedade antes da abertura do host de serviço (numa aplicação de serviço) ou da fábrica de canal (numa aplicação cliente).

  • Adiciona o comportamento usando um atributo personalizado.

Para realizar a tarefa de personalização do serviço para a qual se destina, o IOperationBehavior objeto deve ser adicionado à OperationDescription.Behaviors propriedade antes da construção do tempo de execução do serviço, que ocorre quando ICommunicationObject.Open o método é chamado em System.ServiceModel.ServiceHost. Para realizar uma tarefa de personalização do cliente, o IOperationBehavior objeto deve ser adicionado à OperationDescription.Behaviors propriedade antes de chamar o ChannelFactory<TChannel>.CreateChannel método ou o ICommunicationObject.Open método em ChannelFactory<TChannel>.

Embora o comportamento da operação seja concebido para facilitar o acesso ao runtime no âmbito de uma operação individual, pode aceder ao runtime num âmbito maior acedendo ao objeto de runtime pai.

Métodos

Name Description
AddBindingParameters(OperationDescription, BindingParameterCollection)

Implemente o passe de dados em tempo de execução para bindings para suportar comportamentos personalizados.

ApplyClientBehavior(OperationDescription, ClientOperation)

Implementa uma modificação ou extensão do cliente numa operação.

ApplyDispatchBehavior(OperationDescription, DispatchOperation)

Implementa uma modificação ou extensão do serviço em toda a operação.

Validate(OperationDescription)

Implemente para confirmar que a operação cumpre alguns critérios pretendidos.

Aplica-se a