OperationBehaviorAttribute Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Určuje chování místního spuštění metody služby.
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
- Dědičnost
- Atributy
- Implementuje
Příklady
Následující příklad kódu ukazuje operaci, která se provádí v rámci povinné distribuované transakce. Vlastnost TransactionScopeRequired označuje, že metoda provádí pod volající transakce a TransactionAutoComplete vlastnost indikuje, že pokud nedojde k neošetřeným výjimkám, transakce se potvrdí automaticky. Pokud dojde k neošetřené výjimce, transakce je přerušena.
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
Poznámky
Pomocí atributu OperationBehaviorAttribute můžete určit, jaké chování provádění konkrétní operace má operace při spuštění. (Chcete-li určit chování spuštění na úrovni služby, použijte ServiceBehaviorAttribute atribut.)
Poznámka
Můžete také použít OperationBehaviorAttribute ke konfiguraci operace zpětného volání kontraktu v duplexní klientské aplikaci. Při použití při operaci ReleaseInstanceMode zpětného volání musí None být vlastnost nebo InvalidOperationException je vyvolán výjimka za běhu.
Atribut OperationBehaviorAttribute je funkce programovacího modelu Windows Communication Foundation (WCF), která umožňuje běžné funkce, které vývojáři jinak musí implementovat sami.
Vlastnost AutoDisposeParameters řídí, zda objekty parametrů předané operaci jsou uvolněny po dokončení operace.
Vlastnost TransactionAutoComplete určuje, zda transakce, ve které se metoda provádí, je automaticky potvrzena, pokud nedojde k neošetřeným výjimkám.
Vlastnost TransactionScopeRequired určuje, zda se metoda musí provést v rámci transakce.
Vlastnost Impersonation určuje, zda operace služby může, musí nebo nemůže zosobnit identitu volajícího.
Vlastnost ReleaseInstanceMode určuje, kdy se objekty služby recyklují během procesu vyvolání metody.
Konstruktory
OperationBehaviorAttribute() |
Inicializuje novou instanci OperationBehaviorAttribute třídy. |
Vlastnosti
AutoDisposeParameters |
Získá nebo nastaví hodnotu, která označuje, zda mají být parametry automaticky odstraněny. |
Impersonation |
Získá nebo nastaví hodnotu, která označuje úroveň zosobnění volajícího, kterou operace podporuje. |
ReleaseInstanceMode |
Získá nebo nastaví hodnotu, která označuje, kdy v průběhu vyvolání operace recyklovat objekt služby. |
TransactionAutoComplete |
Získá nebo nastaví hodnotu, která označuje, zda se má automaticky dokončit aktuální obor transakce, pokud nedojde k neošetřeným výjimkám. |
TransactionScopeRequired |
Získá nebo nastaví hodnotu, která označuje, zda metoda vyžaduje obor transakce pro jeho spuštění. |
TypeId |
Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento Attribute. (Zděděno od Attribute) |
Metody
Equals(Object) |
Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu. (Zděděno od Attribute) |
GetHashCode() |
Vrátí hodnotu hash pro tuto instanci. (Zděděno od Attribute) |
GetType() |
Type Získá aktuální instanci. (Zděděno od Object) |
IsDefaultAttribute() |
Při přepsání v odvozené třídě určuje, zda hodnota této instance je výchozí hodnotou odvozené třídy. (Zděděno od Attribute) |
Match(Object) |
Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda se tato instance rovná zadanému objektu. (Zděděno od Attribute) |
MemberwiseClone() |
Vytvoří použádnou kopii aktuálního souboru Object. (Zděděno od Object) |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |