IOperationBehavior IOperationBehavior IOperationBehavior IOperationBehavior Interface

Определение

Реализует методы, которые могут использоваться для поведения во время выполнения для операции в службе или клиентском приложении.Implements methods that can be used to extend run-time behavior for an operation in either a service or client application.

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

Примеры

В следующем примере кода показана реализация интерфейса System.ServiceModel.Dispatcher.IParameterInspector, который осуществляет запись в консоль при вызове инспектора в операции.The following code example shows an implementation of System.ServiceModel.Dispatcher.IParameterInspector that writes to the console when the inspector is invoked on an operation. Эта настройка может быть присоединена только к объекту System.ServiceModel.Dispatcher.DispatchOperation или объекту System.ServiceModel.Dispatcher.ClientOperation, и поэтому обычно вставляется поведением операции.This customization can only be attached to the System.ServiceModel.Dispatcher.DispatchOperation or System.ServiceModel.Dispatcher.ClientOperation and is therefore usually inserted by an operation behavior.

#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

В следующем примере показано, как поведение операции присоединяет инспектор параметров к среде выполнения.The following code example shows how the operation behavior attaches the parameter inspector to the 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

Комментарии

Реализуйте интерфейс IOperationBehavior для изменения, проверки или расширения некоторого аспекта выполнения для всей операции на уровне клиентских приложений или служб.Implement the IOperationBehavior interface to modify, examine, or extend some aspect of operation-wide execution at the application level for either client or service applications.

  • Метод AddBindingParameters используется для предоставления элементов привязки с пользовательскими данными в среде выполнения для разрешения привязок для поддержки настраиваемых поведений.Use the AddBindingParameters method to pass custom data at runtime to enable bindings to support custom behavior.

  • Метод ApplyClientBehavior используется для изменения, проверки или вставки расширений в диспетчер клиента в клиентском приложении.Use the ApplyClientBehavior method to modify, examine, or insert extensions to a client dispatcher in a client application.

  • Метод ApplyDispatchBehavior используется для изменения, проверки или вставки расширений в выполнение всей операции в службе.Use the ApplyDispatchBehavior method to modify, examine, or insert extensions to operation-wide execution in a service application.

  • Можно использовать метод Validate, чтобы подтвердить соответствие OperationDescription конкретным требованиям.Use the Validate method to confirm that a OperationDescription meets specific requirements. Метод может использоваться для проверки включения определенных параметров конфигурации для операции, поддержки конкретных возможностей и соответствия другим требованиям.This can be used to ensure that an operation has a certain configuration setting enabled, supports a particular feature and other requirements.

Объекты IOperationBehavior могут использовать любые из этих методов, но часто важен только один; в таких случаях неиспользуемые методы могут возвращаться, не выполняя никаких действий.IOperationBehavior objects can make use of any of these methods, but often only one is important; in such cases, the unused methods can return, performing no action.

Примечание

Все методы IOperationBehavior передают в качестве параметра объект OperationDescription.All of the IOperationBehavior methods pass an OperationDescription object as a parameter. Данный параметр используется только для изучения; при изменении объекта OperationDescription поведение выполнения не определено.This parameter is for examination only; if you modify the OperationDescription object the execution behavior is undefined.

Объекты IOperationBehavior обычно используются для доступа к различным свойствам объекта System.ServiceModel.Dispatcher.DispatchOperation в службе и свойствам объекта System.ServiceModel.Dispatcher.ClientOperation в приложении клиента.IOperationBehavior objects are typically used to access the various properties of the System.ServiceModel.Dispatcher.DispatchOperation object in a service application and the System.ServiceModel.Dispatcher.ClientOperation object in a client application.

Обычно разработчик сначала проверяет точки расширения, чтобы определить какая настройка подходит для приложения, а затем реализует эту настройку в соответствующей области.Typically, the developer first reviews the extensibility points to determine which customization option suits the application scenario and then implements the customization at the appropriate scope. Например, объекты System.ServiceModel.Description.IServiceBehavior могут выполнять настройки для всех сообщений во всей службе, а объекты System.ServiceModel.Description.IContractBehavior могут выполнять настройки для всех сообщений определенного контракта и т. д.For example, System.ServiceModel.Description.IServiceBehavior objects can insert customizations for all messages in an entire service and System.ServiceModel.Description.IContractBehavior objects can insert customizations for all messages across a specific contract, and so on. Описание различных доступных свойств и настроек см. в разделе Расширение ServiceHost и уровня модели службы.For a description of the various properties and customizations available, see Extending ServiceHost and the Service Model Layer.

После принятия решения по настройке (и интерфейса настройки, реализованного при необходимости), а IOperationBehavior является соответствующей областью настройки, настройка должна быть вставлена в среду выполнения Windows Communication Foundation (WCF) с помощью Реализация IOperationBehavior и добавление поведения операции в среду выполнения.Once a customization has been decided upon (and the customization interface implemented if necessary) and the IOperationBehavior is the appropriate scope of customization, the customization must be inserted into the Windows Communication Foundation (WCF) runtime by implementing IOperationBehavior and adding the operation behavior to the runtime.

Существует два способа добавления IOperationBehavior в среду выполнения:There are two ways to add the IOperationBehavior to the runtime:

  • Программно добавить пользовательское поведение операции в свойство OperationDescription.Behaviors перед открытием узла службы (в службе) или фабрики канала (в клиентском приложении).Programmatically add the custom operation behavior to the OperationDescription.Behaviors property prior to the opening of the service host (in a service application) or the channel factory (in a client application).

  • Добавить поведение с помощью пользовательского атрибута.Add the behavior using a custom attribute.

Чтобы выполнить задачу настройки службы, для которой она предназначена, необходимо добавить объект IOperationBehavior в свойство OperationDescription.Behaviors перед построением службы среды выполнения, что происходит, когда метод ICommunicationObject.Open вызывается на объекте System.ServiceModel.ServiceHost.To perform the service customization task for which it is intended, the IOperationBehavior object must be added to the OperationDescription.Behaviors property prior to the construction of the service runtime, which occurs when ICommunicationObject.Open method is called on System.ServiceModel.ServiceHost. Чтобы выполнить задачу настройки клиента, следует добавить объект IOperationBehavior в свойство OperationDescription.Behaviors перед вызовом метода ChannelFactory<TChannel>.CreateChannel или метода ICommunicationObject.Open на ChannelFactory<TChannel>.To perform a client customization task, the IOperationBehavior object must be added to the OperationDescription.Behaviors property before calling the ChannelFactory<TChannel>.CreateChannel method or the ICommunicationObject.Open method on ChannelFactory<TChannel>.

Хотя поведение операции предназначено для обеспечения простого доступа к среде выполнения в области отдельной операции, можно получить доступ к среде выполнения в большей области, обратившись к родительскому объекту среды выполнения.Although the operation behavior is designed for easy access to the runtime at the scope of an individual operation, you can access the runtime at a larger scope by accessing the parent runtime object.

Методы

AddBindingParameters(OperationDescription, BindingParameterCollection) AddBindingParameters(OperationDescription, BindingParameterCollection) AddBindingParameters(OperationDescription, BindingParameterCollection) AddBindingParameters(OperationDescription, BindingParameterCollection)

Реализуйте для передачи данных привязкам во время выполнения в целях поддержки пользовательских режимов.Implement to pass data at runtime to bindings to support custom behavior.

ApplyClientBehavior(OperationDescription, ClientOperation) ApplyClientBehavior(OperationDescription, ClientOperation) ApplyClientBehavior(OperationDescription, ClientOperation) ApplyClientBehavior(OperationDescription, ClientOperation)

Реализует изменение или расширение клиента во всей операции.Implements a modification or extension of the client across an operation.

ApplyDispatchBehavior(OperationDescription, DispatchOperation) ApplyDispatchBehavior(OperationDescription, DispatchOperation) ApplyDispatchBehavior(OperationDescription, DispatchOperation) ApplyDispatchBehavior(OperationDescription, DispatchOperation)

Реализует изменение или расширение службы во всей операции.Implements a modification or extension of the service across an operation.

Validate(OperationDescription) Validate(OperationDescription) Validate(OperationDescription) Validate(OperationDescription)

Рекомендуется реализовать, чтобы подтвердить соответствие операции определенным критериям.Implement to confirm that the operation meets some intended criteria.

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