OperationBehaviorAttribute Clase

Definición

Especifica el comportamiento de ejecución local de un método de servicio.

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
Herencia
OperationBehaviorAttribute
Atributos
Implementaciones

Ejemplos

El ejemplo de código siguiente muestra una operación que se ejecuta dentro de una transacción distribuida obligatoria. La propiedad TransactionScopeRequired indica que el método se ejecuta bajo la transacción del autor de la llamada, y la propiedad TransactionAutoComplete indica que, si no se produce ninguna excepción no controlada, la transacción se confirma automáticamente. Si se produce una excepción no controlada, se anula la transacción.

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

Comentarios

Utilice el atributo OperationBehaviorAttribute para indicar qué comportamiento de ejecución específico de la operación tiene la operación cuando se ejecuta. (Para especificar el comportamiento de ejecución en el nivel de servicio, utilice el atributo ServiceBehaviorAttribute.)

Nota

También puede utilizar OperationBehaviorAttribute para configurar una operación del contrato de devolución de llamada en una aplicación de cliente dúplex. Cuando se utiliza en una operación de devolución de llamada, la propiedad ReleaseInstanceMode debe ser None o se produce una excepción InvalidOperationException en tiempo de ejecución.

El OperationBehaviorAttribute atributo es una característica de modelo de programación de Windows Communication Foundation (WCF) que permite características comunes que los desarrolladores deben implementar por sí mismos.

  • La propiedad AutoDisposeParameters controla si los objetos de parámetro pasados a una operación se eliminan cuando se completa la operación.

  • La propiedad TransactionAutoComplete especifica si se confirma automáticamente la transacción en la que se ejecuta el método si no se producen excepciones no controladas.

  • La propiedad TransactionScopeRequired especifica si un método debe ejecutarse dentro de una transacción.

  • La propiedad Impersonation especifica si la operación del servicio puede, debe o no puede suplantar la identidad del autor de la llamada.

  • La propiedad ReleaseInstanceMode especifica cuándo se reciclan los objetos de servicio durante el proceso de la invocación de método.

Constructores

OperationBehaviorAttribute()

Inicializa una nueva instancia de la clase OperationBehaviorAttribute.

Propiedades

AutoDisposeParameters

Obtiene o establece un valor que indica si los parámetros se van a eliminar automáticamente.

Impersonation

Obtiene o establece un valor que indica el nivel de suplantación del autor de la llamada que admite la operación.

ReleaseInstanceMode

Obtiene o establece un valor que indica en qué momento del curso de una invocación de la operación se recicla el objeto de servicio.

TransactionAutoComplete

Obtiene o establece un valor que indica si completar automáticamente el ámbito de la transacción actual si no se produce ninguna excepción no controlada.

TransactionScopeRequired

Obtiene o establece un valor que indica si el método requiere un ámbito de la transacción para su ejecución.

TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.

(Heredado de Attribute)

Métodos

Equals(Object)

Devuelve un valor que indica si esta instancia es igual que un objeto especificado.

(Heredado de Attribute)
GetHashCode()

Devuelve el código hash de esta instancia.

(Heredado de Attribute)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
IsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.

(Heredado de Attribute)
Match(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado.

(Heredado de Attribute)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.

(Heredado de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Obtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos de una interfaz.

(Heredado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).

(Heredado de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.

(Heredado de Attribute)
IOperationBehavior.AddBindingParameters(OperationDescription, BindingParameterCollection)

Implementa el método AddBindingParameters(OperationDescription, BindingParameterCollection).

IOperationBehavior.ApplyClientBehavior(OperationDescription, ClientOperation)

Implementa el comportamiento de la operación del lado del cliente.

IOperationBehavior.ApplyDispatchBehavior(OperationDescription, DispatchOperation)

Implementa el comportamiento de la operación del lado del servicio.

IOperationBehavior.Validate(OperationDescription)

Implementa el comportamiento de validación.

Se aplica a