OperationBehaviorAttribute OperationBehaviorAttribute OperationBehaviorAttribute OperationBehaviorAttribute Class

Definizione

Specifica il comportamento di esecuzione locale di un metodo di un servizio.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
Ereditarietà
OperationBehaviorAttributeOperationBehaviorAttributeOperationBehaviorAttributeOperationBehaviorAttribute
Attributi
Implementazioni

Esempi

Nell'esempio di codice seguente viene illustrata un'operazione eseguita all'interno di una transazione distribuita obbligatoria.The following code example shows an operation that executes within a mandatory distributed transaction. La proprietà TransactionScopeRequired indica che il metodo viene eseguito nella transazione del chiamante, mentre la proprietà TransactionAutoComplete indica che, se non si verificano eccezioni non gestite, viene eseguito automaticamente il commit della transazione.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. Se si verifica un'eccezione non gestita, la transazione viene interrotta.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

Commenti

Utilizzare l'attributo OperationBehaviorAttribute per indicare il comportamento specifico che l'operazione deve avere durante l'esecuzione.Use the OperationBehaviorAttribute attribute to indicate what operation-specific execution behavior the operation has when executed. Per specificare il comportamento di esecuzione a livello di servizio, utilizzare l'attributo ServiceBehaviorAttribute.(To specify execution behavior at the service level, use the ServiceBehaviorAttribute attribute.)

Nota

L'attributo OperationBehaviorAttribute può essere inoltre utilizzato per configurare un'operazione di un contratto di callback in un'applicazione client duplex.You can also use OperationBehaviorAttribute to configure a callback contract operation in a duplex client application. Se viene utilizzato in un'operazione di callback, la proprietà ReleaseInstanceMode deve essere None; in caso contrario verrà generata un'eccezione InvalidOperationException in fase di esecuzione.When used on a callback operation, the ReleaseInstanceMode property must be None or an InvalidOperationException exception is thrown at runtime.

Il OperationBehaviorAttribute attributo è una funzionalità del modello di programmazione Windows Communication Foundation (WCF) che abilita funzionalità comuni che in caso contrario, gli sviluppatori devono implementare autonomamente.The OperationBehaviorAttribute attribute is a Windows Communication Foundation (WCF) programming model feature that enables common features that developers otherwise must implement themselves.

  • La proprietà AutoDisposeParameters controlla se gli oggetti parametro passati a un'operazione vengono eliminati al termine dell'operazione.The AutoDisposeParameters property controls whether parameter objects passed to an operation are disposed when the operation completes.

  • La proprietà TransactionAutoComplete specifica se viene eseguito automaticamente il commit della transazione in cui viene eseguito il metodo se non si verificano eccezioni non gestite.The TransactionAutoComplete property specifies whether the transaction in which the method executes is automatically committed if no unhandled exceptions occur.

  • La proprietà TransactionScopeRequired specifica se un metodo deve essere eseguito all'interno di una transazione.The TransactionScopeRequired property specifies whether a method must execute within a transaction.

  • La proprietà Impersonation specifica se l'operazione del servizio può, non può o deve rappresentare l'identità del chiamante.The Impersonation property specifies whether the service operation can, must, or cannot impersonate the caller's identity.

  • La proprietà ReleaseInstanceMode specifica quando riciclare oggetti servizio durante il processo di chiamata del metodo.The ReleaseInstanceMode property specifies when service objects are recycled during the method invocation process.

Costruttori

OperationBehaviorAttribute() OperationBehaviorAttribute() OperationBehaviorAttribute() OperationBehaviorAttribute()

Inizializza una nuova istanza della classe OperationBehaviorAttribute.Initializes a new instance of the OperationBehaviorAttribute class.

Proprietà

AutoDisposeParameters AutoDisposeParameters AutoDisposeParameters AutoDisposeParameters

Ottiene o imposta un valore che indica se i parametri devono essere eliminati automaticamente.Gets or sets a value that indicates whether parameters are to be automatically disposed.

Impersonation Impersonation Impersonation Impersonation

Ottiene o imposta un valore che indica il livello di rappresentazione del chiamante supportato dall'operazione.Gets or sets a value that indicates the level of caller impersonation that the operation supports.

ReleaseInstanceMode ReleaseInstanceMode ReleaseInstanceMode ReleaseInstanceMode

Ottiene o imposta un valore che indica quando riciclare l'oggetto servizio nel corso della chiamata a un'operazione.Gets or sets a value that indicates when in the course of an operation invocation to recycle the service object.

TransactionAutoComplete TransactionAutoComplete TransactionAutoComplete TransactionAutoComplete

Ottiene o imposta un valore che indica se completare automaticamente l'ambito di transazione corrente se non si verifica alcuna eccezione non gestita.Gets or sets a value that indicates whether to automatically complete the current transaction scope if no unhandled exceptions occur.

TransactionScopeRequired TransactionScopeRequired TransactionScopeRequired TransactionScopeRequired

Ottiene o imposta un valore che indica se per l'esecuzione del metodo è necessario un ambito di transazione.Gets or sets a value that indicates whether the method requires a transaction scope for its execution.

TypeId TypeId TypeId TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Implementazioni dell'interfaccia esplicita

IOperationBehavior.AddBindingParameters(OperationDescription, BindingParameterCollection) IOperationBehavior.AddBindingParameters(OperationDescription, BindingParameterCollection) IOperationBehavior.AddBindingParameters(OperationDescription, BindingParameterCollection) IOperationBehavior.AddBindingParameters(OperationDescription, BindingParameterCollection)

Implementa il metodo AddBindingParameters(OperationDescription, BindingParameterCollection).Implements the AddBindingParameters(OperationDescription, BindingParameterCollection) method.

IOperationBehavior.ApplyClientBehavior(OperationDescription, ClientOperation) IOperationBehavior.ApplyClientBehavior(OperationDescription, ClientOperation) IOperationBehavior.ApplyClientBehavior(OperationDescription, ClientOperation) IOperationBehavior.ApplyClientBehavior(OperationDescription, ClientOperation)

Implementa il comportamento dell'operazione client.Implements the client operation behavior.

IOperationBehavior.ApplyDispatchBehavior(OperationDescription, DispatchOperation) IOperationBehavior.ApplyDispatchBehavior(OperationDescription, DispatchOperation) IOperationBehavior.ApplyDispatchBehavior(OperationDescription, DispatchOperation) IOperationBehavior.ApplyDispatchBehavior(OperationDescription, DispatchOperation)

Implementa il comportamento dell'operazione del servizio.Implements the service operation behavior.

IOperationBehavior.Validate(OperationDescription) IOperationBehavior.Validate(OperationDescription) IOperationBehavior.Validate(OperationDescription) IOperationBehavior.Validate(OperationDescription)

Implementa il comportamento di convalida.Implements the validation behavior.

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

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Metodi

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Restituisce il codice hash per l'istanza.Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Inherited from Object)

Si applica a