OperationBehaviorAttribute Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- 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) |