IOperationBehavior Interface
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Implementa métodos que podem ser usados para estender o comportamento de tempo de execução de 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 dessas System.ServiceModel.Dispatcher.IParameterInspector gravações no console quando o inspetor é invocado em uma operação. Essa personalização só pode ser anexada ao System.ServiceModel.Dispatcher.DispatchOperation ou e System.ServiceModel.Dispatcher.ClientOperation , 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 outros requisitos.
IOperationBehavior 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 examina os pontos de extensibilidade para determinar qual opção de personalização se adapta ao cenário do aplicativo e, em seguida, implementa a personalização no escopo apropriado. Por exemplo, System.ServiceModel.Description.IServiceBehavior objetos podem inserir personalizações para todas as mensagens em um serviço inteiro e System.ServiceModel.Description.IContractBehavior 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 Estender o ServiceHost e a Camada de Modelo de Serviço.
Depois que uma personalização é decidida (e a interface de personalização implementada, se necessário) e o IOperationBehavior escopo apropriado da personalização, a personalização deve ser inserida no runtime do WCF (Windows Communication Foundation) implementando IOperationBehavior e adicionando o comportamento da operação ao runtime.
Há duas maneiras de adicionar o IOperationBehavior runtime:
Adicione programaticamente o comportamento de 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 de serviço para a qual se destina, o IOperationBehavior objeto deve ser adicionado à OperationDescription.Behaviors propriedade antes da construção do runtime de serviço, que ocorre quando ICommunicationObject.Open o método é chamado System.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 em ChannelFactory<TChannel>.
Embora o comportamento da operação tenha sido 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
AddBindingParameters(OperationDescription, BindingParameterCollection) |
Implementar para passar dados em runtime para associações a fim de dar suporte ao comportamento personalizado. |
ApplyClientBehavior(OperationDescription, ClientOperation) |
Implementa uma modificação ou extensão do cliente em toda 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 desejados. |