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 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
- 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) |