Поделиться через


IOperationBehavior Интерфейс

Определение

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

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

Примеры

В следующем примере кода показана реализация System.ServiceModel.Dispatcher.IParameterInspector , которая записывается в консоль при вызове инспектора в операции. Эта настройка может быть присоединена только к или System.ServiceModel.Dispatcher.DispatchOperationSystem.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)

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

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