Partager via


OperationBehaviorAttribute Classe

Définition

Spécifie le comportement d'exécution local 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 propriété TransactionScopeRequired indique que la méthode s'exécute sous la transaction de l'appelant, tandis que la propriété TransactionAutoComplete indique qu'en l'absence d'exception non gérée, la transaction est automatiquement validée. 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 le comportement d'exécution spécifique de l'opération lors de son exécution. (Pour spécifier le comportement d'exécution au niveau du service, utilisez l'attribut ServiceBehaviorAttribute.)

Notes

Vous pouvez également utiliser OperationBehaviorAttribute pour configurer une opération de contrat de rappel dans une application cliente duplex. Lorsque vous l'utilisez dans le cadre d'une opération de rappel, la propriété ReleaseInstanceMode doit avoir la valeur None, sinon une exception InvalidOperationException 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 permet aux développeurs d’implémenter eux-mêmes des fonctionnalités courantes.

  • La propriété AutoDisposeParameters contrôle si les objets de paramètre transférés à une opération sont supprimés au terme de l'opération.

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

  • La propriété TransactionScopeRequired spécifie si une méthode doit s'exécuter au sein d'une transaction.

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

  • La propriété ReleaseInstanceMode spécifie à quel moment du processus d'appel de la méthode les objets de service sont recyclés.

Constructeurs

OperationBehaviorAttribute()

Initialise une nouvelle instance de la classe OperationBehaviorAttribute.

Propriétés

AutoDisposeParameters

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

Impersonation

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

ReleaseInstanceMode

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

TransactionAutoComplete

Obtient ou définit une valeur qui indique si l’étendue de la transaction actuelle doit être automatiquement exécutée lorsqu’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

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.

(Hérité de Attribute)

Méthodes

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 de cette instance.

(Hérité de Attribute)
GetType()

Obtient le 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 pour la classe dérivée.

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

En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

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

(Hérité de Object)

Implémentations d’interfaces explicites

_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 pour 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 aux méthodes exposées par un objet.

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

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

IOperationBehavior.ApplyClientBehavior(OperationDescription, ClientOperation)

Implémente le comportement de l'opération côté client.

IOperationBehavior.ApplyDispatchBehavior(OperationDescription, DispatchOperation)

Implémente le comportement de l'opération côté service.

IOperationBehavior.Validate(OperationDescription)

Implémente le comportement de validation.

S’applique à