OperationBehaviorAttribute Clase

Definición

Especifica el comportamiento de ejecución local de un método de servicio.Specifies the local execution behavior of a service method.

public ref class OperationBehaviorAttribute sealed : Attribute, System::ServiceModel::Description::IOperationBehavior
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class OperationBehaviorAttribute : Attribute, System.ServiceModel.Description.IOperationBehavior
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.The following code example shows an operation that executes within a mandatory distributed transaction. 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.The TransactionScopeRequired property indicates that the method executes under the caller's transaction and the TransactionAutoComplete property indicates that if no unhandled exceptions occur, the transaction commits automatically. Si se produce una excepción no controlada, se anula la transacción.If an unhandled exception does occur, the transaction is aborted.

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.Use the OperationBehaviorAttribute attribute to indicate what operation-specific execution behavior the operation has when executed. (Para especificar el comportamiento de ejecución en el nivel de servicio, utilice el atributo ServiceBehaviorAttribute.)(To specify execution behavior at the service level, use the ServiceBehaviorAttribute attribute.)

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.You can also use OperationBehaviorAttribute to configure a callback contract operation in a duplex client application. 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.When used on a callback operation, the ReleaseInstanceMode property must be None or an InvalidOperationException exception is thrown at runtime.

El OperationBehaviorAttribute atributo es una característica del modelo de programación de Windows Communication Foundation (WCF) que permite características comunes que los desarrolladores deben implementar por sí mismos.The OperationBehaviorAttribute attribute is a Windows Communication Foundation (WCF) programming model feature that enables common features that developers otherwise must implement themselves.

  • La propiedad AutoDisposeParameters controla si los objetos de parámetro pasados a una operación se eliminan cuando se completa la operación.The AutoDisposeParameters property controls whether parameter objects passed to an operation are disposed when the operation completes.

  • 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.The TransactionAutoComplete property specifies whether the transaction in which the method executes is automatically committed if no unhandled exceptions occur.

  • La propiedad TransactionScopeRequired especifica si un método debe ejecutarse dentro de una transacción.The TransactionScopeRequired property specifies whether a method must execute within a transaction.

  • La propiedad Impersonation especifica si la operación del servicio puede, debe o no puede suplantar la identidad del autor de la llamada.The Impersonation property specifies whether the service operation can, must, or cannot impersonate the caller's identity.

  • La propiedad ReleaseInstanceMode especifica cuándo se reciclan los objetos de servicio durante el proceso de la invocación de método.The ReleaseInstanceMode property specifies when service objects are recycled during the method invocation process.

Constructores

OperationBehaviorAttribute()

Inicializa una nueva instancia de la clase OperationBehaviorAttribute.Initializes a new instance of the OperationBehaviorAttribute class.

Propiedades

AutoDisposeParameters

Obtiene o establece un valor que indica si los parámetros se van a eliminar automáticamente.Gets or sets a value that indicates whether parameters are to be automatically disposed.

Impersonation

Obtiene o establece un valor que indica el nivel de suplantación del autor de la llamada que admite la operación.Gets or sets a value that indicates the level of caller impersonation that the operation supports.

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.Gets or sets a value that indicates when in the course of an operation invocation to recycle the service object.

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.Gets or sets a value that indicates whether to automatically complete the current transaction scope if no unhandled exceptions occur.

TransactionScopeRequired

Obtiene o establece un valor que indica si el método requiere un ámbito de la transacción para su ejecución.Gets or sets a value that indicates whether the method requires a transaction scope for its execution.

TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Heredado de Attribute)

Métodos

Equals(Object)

Devuelve un valor que indica si esta instancia es igual que un objeto especificado.Returns a value that indicates whether this instance is equal to a specified object.

(Heredado de Attribute)
GetHashCode()

Devuelve el código hash de esta instancia.Returns the hash code for this instance.

(Heredado de Attribute)
GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(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.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(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.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Heredado de Attribute)
MemberwiseClone()

Crea una copia superficial del Object actual.Creates a shallow copy of the current Object.

(Heredado de Object)
ToString()

Devuelve un valor de tipo string que representa el objeto actual.Returns a string that represents the current object.

(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.Maps a set of names to a corresponding set of dispatch identifiers.

(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.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Heredado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).Retrieves the number of type information interfaces that an object provides (either 0 or 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.Provides access to properties and methods exposed by an object.

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

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

IOperationBehavior.ApplyClientBehavior(OperationDescription, ClientOperation)

Implementa el comportamiento de la operación del lado del cliente.Implements the client operation behavior.

IOperationBehavior.ApplyDispatchBehavior(OperationDescription, DispatchOperation)

Implementa el comportamiento de la operación del lado del servicio.Implements the service operation behavior.

IOperationBehavior.Validate(OperationDescription)

Implementa el comportamiento de validación.Implements the validation behavior.

Se aplica a