IOperationBehavior Interface
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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. |