Partager via


OperationBehaviorAttribute Classe

Définition

Spécifie le comportement d’exécution locale d’une méthode de service.

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
Héritage
OperationBehaviorAttribute
Attributs
Implémente

Exemples

L’exemple de code suivant montre une opération qui s’exécute dans une transaction distribuée obligatoire. La TransactionScopeRequired propriété indique que la méthode s’exécute sous la transaction de l’appelant et que la TransactionAutoComplete propriété indique qu’en l’absence d’exceptions non gérées, la transaction est validée automatiquement. Si une exception non gérée se produit, la transaction est abandonnée.

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

Remarques

Utilisez l’attribut OperationBehaviorAttribute pour indiquer quel comportement d’exécution spécifique à l’opération l’opération a lorsqu’elle est exécutée. (Pour spécifier le comportement d’exécution au niveau du service, utilisez l’attribut ServiceBehaviorAttribute .)

Note

Vous pouvez également utiliser OperationBehaviorAttribute pour configurer une opération de contrat de rappel dans une application cliente duplex. Lorsqu’elle est utilisée sur une opération de rappel, la ReleaseInstanceMode propriété doit être None ou une InvalidOperationException exception est levée au moment de l’exécution.

L’attribut OperationBehaviorAttribute est une fonctionnalité de modèle de programmation Windows Communication Foundation (WCF) qui active les fonctionnalités courantes que les développeurs doivent implémenter elles-mêmes.

  • La AutoDisposeParameters propriété contrôle si les objets de paramètre passés à une opération sont supprimés une fois l’opération terminée.

  • La TransactionAutoComplete propriété spécifie si la transaction dans laquelle la méthode s’exécute est automatiquement validée si aucune exception non gérée ne se produit.

  • La TransactionScopeRequired propriété spécifie si une méthode doit s’exécuter dans une transaction.

  • La Impersonation propriété spécifie si l’opération de service peut, doit ou ne peut pas emprunter l’identité de l’appelant.

  • La ReleaseInstanceMode propriété spécifie quand les objets de service sont recyclés pendant le processus d’appel de méthode.

Constructeurs

Nom Description
OperationBehaviorAttribute()

Initialise une nouvelle instance de la classe OperationBehaviorAttribute.

Propriétés

Nom Description
AutoDisposeParameters

Obtient ou définit une valeur qui indique si les paramètres doivent être supprimés automatiquement.

Impersonation

Obtient ou définit une valeur qui indique le niveau d’emprunt d’identité de l’appelant pris en charge par l’opération.

ReleaseInstanceMode

Obtient ou définit une valeur qui indique quand, au cours d’un appel d’opération, pour recycler l’objet de service.

TransactionAutoComplete

Obtient ou définit une valeur qui indique s’il faut terminer automatiquement l’étendue de transaction actuelle si aucune exception non gérée ne se produit.

TransactionScopeRequired

Obtient ou définit une valeur qui indique si la méthode requiert une étendue de transaction pour son exécution.

TypeId

En cas d’implémentation dans une classe dérivée, obtient un identificateur unique pour cette Attribute.

(Hérité de Attribute)

Méthodes

Nom Description
Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
GetHashCode()

Retourne le code de hachage pour cette instance.

(Hérité de Attribute)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
IsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut de la classe dérivée.

(Hérité de Attribute)
Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

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

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.

(Hérité de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type d’un objet, qui peuvent être utilisées pour obtenir les informations de type d’une interface.

(Hérité de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).

(Hérité de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l’accès aux propriétés et méthodes exposées par un objet.

(Hérité de Attribute)
IOperationBehavior.AddBindingParameters(OperationDescription, BindingParameterCollection)

Implémente la AddBindingParameters(OperationDescription, BindingParameterCollection) méthode.

IOperationBehavior.ApplyClientBehavior(OperationDescription, ClientOperation)

Implémente le comportement de l’opération du client.

IOperationBehavior.ApplyDispatchBehavior(OperationDescription, DispatchOperation)

Implémente le comportement de l’opération de service.

IOperationBehavior.Validate(OperationDescription)

Implémente le comportement de validation.

S’applique à