Partilhar via


IOperationBehavior Interface

Definição

Implementa métodos que podem ser usados para estender o comportamento em tempo de execução para uma operação em um serviço ou aplicativo cliente.

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

Exemplos

O exemplo de código a seguir mostra uma implementação dessa System.ServiceModel.Dispatcher.IParameterInspector gravação no console quando o inspetor é invocado em uma operação. Essa personalização só pode ser anexada ao System.ServiceModel.Dispatcher.DispatchOperation ou System.ServiceModel.Dispatcher.ClientOperation e, portanto, geralmente é 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 a seguir mostra como o comportamento da operação anexa o inspetor de parâmetros ao runtime.

#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

Comentários

Implemente a IOperationBehavior interface para modificar, examinar ou estender algum aspecto da execução em toda a operação no nível do aplicativo para aplicativos cliente ou de serviço.

  • Use o AddBindingParameters método para passar dados personalizados em runtime para habilitar associações para dar suporte a comportamentos personalizados.

  • Use o ApplyClientBehavior método para modificar, examinar ou inserir extensões em um dispatcher de cliente em um aplicativo cliente.

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

  • Use o Validate método para confirmar se um OperationDescription atende a requisitos específicos. Isso pode ser usado para garantir que uma operação tenha uma determinada configuração habilitada, dê suporte a um recurso específico e a outros requisitos.

IOperationBehavior os objetos podem usar qualquer um desses métodos, mas geralmente apenas um é importante; nesses casos, os métodos não utilizados podem retornar, não executando nenhuma ação.

Observação

Todos os IOperationBehavior métodos passam um OperationDescription objeto como um parâmetro. Esse parâmetro é somente para exame; se você modificar o OperationDescription objeto, o comportamento de execução será indefinido.

IOperationBehavior os objetos normalmente são usados para acessar as várias propriedades do System.ServiceModel.Dispatcher.DispatchOperation objeto em um aplicativo de serviço e o System.ServiceModel.Dispatcher.ClientOperation objeto em um aplicativo cliente.

Normalmente, o desenvolvedor primeiro analisa os pontos de extensibilidade para determinar qual opção de personalização atende ao cenário do aplicativo e, em seguida, implementa a personalização no escopo apropriado. Por exemplo, System.ServiceModel.Description.IServiceBehavior os objetos podem inserir personalizações para todas as mensagens em um serviço inteiro e System.ServiceModel.Description.IContractBehavior os objetos podem inserir personalizações para todas as mensagens em um contrato específico e assim por diante. Para obter uma descrição das várias propriedades e personalizações disponíveis, consulte Extending ServiceHost and the Service Model Layer.

Depois que uma personalização tiver sido decidida (e a interface de personalização implementada, se necessário) e o IOperationBehavior escopo apropriado de personalização, a personalização deverá ser inserida no runtime do Windows Communication Foundation (WCF) implementando IOperationBehavior e adicionando o comportamento da operação ao runtime.

Há duas maneiras de adicionar o IOperationBehavior runtime:

  • Adicione programaticamente o comportamento da operação personalizada à OperationDescription.Behaviors propriedade antes da abertura do host de serviço (em um aplicativo de serviço) ou da fábrica de canais (em um aplicativo cliente).

  • Adicione o comportamento usando um atributo personalizado.

Para executar a tarefa de personalização do serviço para a qual se destina, o objeto deve ser adicionado à OperationDescription.Behaviors propriedade antes da construção do runtime de serviço, que ocorre quando ICommunicationObject.Open o IOperationBehavior método é chamadoSystem.ServiceModel.ServiceHost. Para executar 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.ChannelFactory<TChannel>

Embora o comportamento da operação seja projetado para facilitar o acesso ao runtime no escopo de uma operação individual, você pode acessar o runtime em um escopo maior acessando o objeto de runtime pai.

Métodos

Nome Description
AddBindingParameters(OperationDescription, BindingParameterCollection)

Implemente para passar dados em runtime para associações para dar suporte a comportamentos personalizados.

ApplyClientBehavior(OperationDescription, ClientOperation)

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

ApplyDispatchBehavior(OperationDescription, DispatchOperation)

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

Validate(OperationDescription)

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

Aplica-se a