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


OperationBehaviorAttribute Класс

Определение

Задает поведение локального выполнения метода службы.

public ref class OperationBehaviorAttribute sealed : Attribute, System::ServiceModel::Description::IOperationBehavior
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class OperationBehaviorAttribute : Attribute, System.ServiceModel.Description.IOperationBehavior
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type OperationBehaviorAttribute = class
    inherit Attribute
    interface IOperationBehavior
Public NotInheritable Class OperationBehaviorAttribute
Inherits Attribute
Implements IOperationBehavior
Наследование
OperationBehaviorAttribute
Атрибуты
Реализации

Примеры

В следующем примере кода показана операция, которая выполняется в рамках обязательной распределенной транзакции. Свойство TransactionScopeRequired указывает, что метод выполняется под транзакцией вызывающего объекта, а TransactionAutoComplete свойство указывает, что если необработанные исключения не возникают, транзакция фиксируется автоматически. Если возникает необработанное исключение, транзакция прервана.

using System;
using System.ServiceModel;
using System.Transactions;

namespace Microsoft.WCF.Documentation
{
  [ServiceContract(Namespace="http://microsoft.wcf.documentation", SessionMode=SessionMode.Required)]
  public interface IBehaviorService
  {
    [OperationContract]
    string TxWork(string message);
  }

  // Note: To use the TransactionIsolationLevel property, you
  // must add a reference to the System.Transactions.dll assembly.
  /* The following service implementation:
   *   -- Processes messages on one thread at a time
   *   -- Creates one service object per session
   *   -- Releases the service object when the transaction commits
   */
  [ServiceBehavior(
    ConcurrencyMode=ConcurrencyMode.Single,
    InstanceContextMode=InstanceContextMode.PerSession,
    ReleaseServiceInstanceOnTransactionComplete=true
  )]
  public class BehaviorService : IBehaviorService, IDisposable
  {
    Guid myID;

    public BehaviorService()
    {
      myID = Guid.NewGuid();
      Console.WriteLine(
        "Object "
        + myID.ToString()
        + " created.");
    }

    /*
     * The following operation-level behaviors are specified:
     *   -- Always executes under a transaction scope.
     *   -- The transaction scope is completed when the operation terminates
     *       without an unhandled exception.
     */
    [OperationBehavior(
      TransactionAutoComplete = true,
      TransactionScopeRequired = true
    )]
    [TransactionFlow(TransactionFlowOption.Mandatory)]
    public string TxWork(string message)
    {
      // Do some transactable work.
      Console.WriteLine("TxWork called with: " + message);
      // Display transaction information.

      TransactionInformation info = Transaction.Current.TransactionInformation;
      Console.WriteLine("The distributed tx ID: {0}.", info.DistributedIdentifier);
      Console.WriteLine("The tx status: {0}.", info.Status);
      return String.Format("Hello. This was object {0}.",myID.ToString()) ;
    }

    public void Dispose()
    {
      Console.WriteLine(
        "Service "
        + myID.ToString()
        + " is being recycled."
      );
    }
  }
}
Imports System.ServiceModel
Imports System.Transactions

Namespace Microsoft.WCF.Documentation
  <ServiceContract(Namespace:="http://microsoft.wcf.documentation", SessionMode:=SessionMode.Required)> _
  Public Interface IBehaviorService
    <OperationContract> _
    Function TxWork(ByVal message As String) As String
  End Interface

    ' Note: To use the TransactionIsolationLevel property, you 
    ' must add a reference to the System.Transactions.dll assembly.
    ' The following service implementation:
    '   *   -- Processes messages on one thread at a time
    '   *   -- Creates one service object per session
    '   *   -- Releases the service object when the transaction commits

    <ServiceBehavior(ConcurrencyMode:=ConcurrencyMode.Single, InstanceContextMode:=InstanceContextMode.PerSession, _
                     ReleaseServiceInstanceOnTransactionComplete:=True)> _
    Public Class BehaviorService
        Implements IBehaviorService, IDisposable
        Private myID As Guid

        Public Sub New()
            myID = Guid.NewGuid()
            Console.WriteLine("Object " & myID.ToString() & " created.")
        End Sub

        '    
        '     * The following operation-level behaviors are specified:
        '     *   -- Always executes under a transaction scope.
        '     *   -- The transaction scope is completed when the operation terminates 
        '     *       without an unhandled exception.
        '     
        <OperationBehavior(TransactionAutoComplete:=True, TransactionScopeRequired:=True), _
        TransactionFlow(TransactionFlowOption.Mandatory)> _
        Public Function TxWork(ByVal message As String) As String Implements IBehaviorService.TxWork
            ' Do some transactable work.
            Console.WriteLine("TxWork called with: " & message)
            ' Display transaction information.

            Dim info As TransactionInformation = Transaction.Current.TransactionInformation
            Console.WriteLine("The distributed tx ID: {0}.", info.DistributedIdentifier)
            Console.WriteLine("The tx status: {0}.", info.Status)
            Return String.Format("Hello. This was object {0}.", myID.ToString())
        End Function

        Public Sub Dispose() Implements IDisposable.Dispose
            Console.WriteLine("Service " & myID.ToString() & " is being recycled.")
        End Sub
    End Class
End Namespace

Комментарии

OperationBehaviorAttribute Используйте атрибут, чтобы указать, какое поведение выполнения операции выполняется при выполнении. (Чтобы указать поведение выполнения на уровне обслуживания, используйте ServiceBehaviorAttribute атрибут.)

Замечание

Можно также использовать OperationBehaviorAttribute для настройки операции обратного контракта в дуплексном клиентском приложении. При использовании для операции ReleaseInstanceMode обратного вызова свойство должно быть None или InvalidOperationException исключение создается во время выполнения.

Атрибут OperationBehaviorAttribute — это функция программирования Windows Communication Foundation (WCF), которая включает общие функции, которые разработчики в противном случае должны реализовать.

  • Свойство AutoDisposeParameters определяет, удаляются ли объекты параметров, передаваемые операции, после завершения операции.

  • Свойство TransactionAutoComplete указывает, выполняется ли транзакция, в которой выполняется метод, автоматически фиксируется, если необработанные исключения не происходят.

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

  • Свойство Impersonation указывает, может ли операция службы, должна или не может олицетворить удостоверение вызывающего объекта.

  • Свойство ReleaseInstanceMode указывает, когда объекты службы перезапускаются во время процесса вызова метода.

Конструкторы

Имя Описание
OperationBehaviorAttribute()

Инициализирует новый экземпляр класса OperationBehaviorAttribute.

Свойства

Имя Описание
AutoDisposeParameters

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

Impersonation

Возвращает или задает значение, указывающее уровень олицетворения вызывающего объекта, который поддерживает операция.

ReleaseInstanceMode

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

TransactionAutoComplete

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

TransactionScopeRequired

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

TypeId

При реализации в производном классе получает уникальный идентификатор для этого Attribute.

(Унаследовано от Attribute)

Методы

Имя Описание
Equals(Object)

Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
GetHashCode()

Возвращает хэш-код для этого экземпляра.

(Унаследовано от Attribute)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

(Унаследовано от Attribute)
Match(Object)

При переопределении в производном классе возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

Имя Описание
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

(Унаследовано от Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

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

(Унаследовано от Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

(Унаследовано от Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к свойствам и методам, предоставляемым объектом.

(Унаследовано от Attribute)
IOperationBehavior.AddBindingParameters(OperationDescription, BindingParameterCollection)

AddBindingParameters(OperationDescription, BindingParameterCollection) Реализует метод.

IOperationBehavior.ApplyClientBehavior(OperationDescription, ClientOperation)

Реализует поведение операции клиента.

IOperationBehavior.ApplyDispatchBehavior(OperationDescription, DispatchOperation)

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

IOperationBehavior.Validate(OperationDescription)

Реализует поведение проверки.

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