OperationBehaviorAttribute Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Specifica il comportamento di esecuzione locale di un metodo di un servizio.
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
- Ereditarietà
- Attributi
- Implementazioni
Esempio
Nell'esempio di codice seguente viene illustrata un'operazione eseguita all'interno di una transazione distribuita obbligatoria. 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. Se si verifica un'eccezione non gestita, la transazione viene interrotta.
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. Per specificare il comportamento di esecuzione a livello di servizio, utilizzare l'attributo ServiceBehaviorAttribute.
Nota
L'attributo OperationBehaviorAttribute può essere inoltre utilizzato per configurare un'operazione di un contratto di callback in un'applicazione client duplex. 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.
L'attributo OperationBehaviorAttribute è una funzionalità di programmazione Windows Communication Foundation (WCF) che consente funzionalità comuni che gli sviluppatori altrimenti devono implementare.
La proprietà AutoDisposeParameters controlla se gli oggetti parametro passati a un'operazione vengono eliminati al termine dell'operazione.
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.
La proprietà TransactionScopeRequired specifica se un metodo deve essere eseguito all'interno di una transazione.
La proprietà Impersonation specifica se l'operazione del servizio può, non può o deve rappresentare l'identità del chiamante.
La proprietà ReleaseInstanceMode specifica quando riciclare oggetti servizio durante il processo di chiamata del metodo.
Costruttori
OperationBehaviorAttribute() |
Inizializza una nuova istanza della classe OperationBehaviorAttribute. |
Proprietà
AutoDisposeParameters |
Ottiene o imposta un valore che indica se i parametri devono essere eliminati automaticamente. |
Impersonation |
Ottiene o imposta un valore che indica il livello di rappresentazione del chiamante supportato dall'operazione. |
ReleaseInstanceMode |
Ottiene o imposta un valore che indica quando riciclare l'oggetto servizio nel corso della chiamata a un'operazione. |
TransactionAutoComplete |
Ottiene o imposta un valore che indica se completare automaticamente l'ambito di transazione corrente se non si verifica alcuna eccezione non gestita. |
TransactionScopeRequired |
Ottiene o imposta un valore che indica se per l'esecuzione del metodo è necessario un ambito di transazione. |
TypeId |
Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute. (Ereditato da Attribute) |
Metodi
Equals(Object) |
Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato. (Ereditato da Attribute) |
GetHashCode() |
Restituisce il codice hash per l'istanza. (Ereditato da Attribute) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
IsDefaultAttribute() |
In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata. (Ereditato da Attribute) |
Match(Object) |
Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato. (Ereditato da Attribute) |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |