IOperationBehavior Интерфейс

Определение

Реализует методы, которые могут использоваться для поведения во время выполнения для операции в службе или клиентском приложении.

public interface class IOperationBehavior
public interface IOperationBehavior
type IOperationBehavior = interface
Public Interface IOperationBehavior
Производный

Примеры

В следующем примере кода показана реализация интерфейса System.ServiceModel.Dispatcher.IParameterInspector, который осуществляет запись в консоль при вызове инспектора в операции. Эта настройка может быть присоединена только к объекту System.ServiceModel.Dispatcher.DispatchOperation или объекту System.ServiceModel.Dispatcher.ClientOperation, и поэтому обычно вставляется поведением операции.

#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

В следующем примере показано, как поведение операции присоединяет инспектор параметров к среде выполнения.

#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

Комментарии

Реализуйте интерфейс IOperationBehavior для изменения, проверки или расширения некоторого аспекта выполнения для всей операции на уровне клиентских приложений или служб.

  • Метод AddBindingParameters используется для предоставления элементов привязки с пользовательскими данными в среде выполнения для разрешения привязок для поддержки настраиваемых поведений.

  • Метод ApplyClientBehavior используется для изменения, проверки или вставки расширений в диспетчер клиента в клиентском приложении.

  • Метод ApplyDispatchBehavior используется для изменения, проверки или вставки расширений в выполнение всей операции в службе.

  • Можно использовать метод Validate, чтобы подтвердить соответствие OperationDescription конкретным требованиям. Метод может использоваться для проверки включения определенных параметров конфигурации для операции, поддержки конкретных возможностей и соответствия другим требованиям.

IOperationBehavior объекты могут использовать любой из этих методов, но часто важен только один из них; в таких случаях неиспользуемые методы могут возвращать, не выполняя никаких действий.

Примечание

Все методы IOperationBehavior передают в качестве параметра объект OperationDescription. Данный параметр используется только для изучения; при изменении объекта OperationDescription поведение выполнения не определено.

Объекты IOperationBehavior обычно используются для доступа к различным свойствам объекта System.ServiceModel.Dispatcher.DispatchOperation в службе и свойствам объекта System.ServiceModel.Dispatcher.ClientOperation в приложении клиента.

Обычно разработчик сначала проверяет точки расширения, чтобы определить какая настройка подходит для приложения, а затем реализует эту настройку в соответствующей области. Например, объекты System.ServiceModel.Description.IServiceBehavior могут выполнять настройки для всех сообщений во всей службе, а объекты System.ServiceModel.Description.IContractBehavior могут выполнять настройки для всех сообщений определенного контракта и т. д. Описание различных доступных свойств и настроек см. в разделе Расширение ServiceHost и уровня модели службы.

После принятия решения о настройке (и реализации интерфейса настройки при необходимости) и IOperationBehavior соответствующей области настройки необходимо вставить настройку в среду выполнения Windows Communication Foundation (WCF), реализовав IOperationBehavior и добавив поведение операции в среду выполнения.

Существует два способа добавления IOperationBehavior в среду выполнения:

  • Программно добавить пользовательское поведение операции в свойство OperationDescription.Behaviors перед открытием узла службы (в службе) или фабрики канала (в клиентском приложении).

  • Добавить поведение с помощью пользовательского атрибута.

Чтобы выполнить задачу настройки службы, для которой она предназначена, необходимо добавить объект IOperationBehavior в свойство OperationDescription.Behaviors перед построением службы среды выполнения, что происходит, когда метод ICommunicationObject.Open вызывается на объекте System.ServiceModel.ServiceHost. Чтобы выполнить задачу настройки клиента, следует добавить объект IOperationBehavior в свойство OperationDescription.Behaviors перед вызовом метода ChannelFactory<TChannel>.CreateChannel или метода ICommunicationObject.Open на ChannelFactory<TChannel>.

Хотя поведение операции предназначено для обеспечения простого доступа к среде выполнения в области отдельной операции, можно получить доступ к среде выполнения в большей области, обратившись к родительскому объекту среды выполнения.

Методы

AddBindingParameters(OperationDescription, BindingParameterCollection)

Реализуйте для передачи данных привязкам во время выполнения в целях поддержки пользовательских режимов.

ApplyClientBehavior(OperationDescription, ClientOperation)

Реализует изменение или расширение клиента во всей операции.

ApplyDispatchBehavior(OperationDescription, DispatchOperation)

Реализует изменение или расширение службы во всей операции.

Validate(OperationDescription)

Реализуйте, чтобы подтвердить соответствие операции определенным критериям.

Применяется к