OperationBehaviorAttribute Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Określa zachowanie lokalnego wykonywania metody usługi.
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
- Dziedziczenie
- Atrybuty
- Implementuje
Przykłady
Poniższy przykład kodu przedstawia operację wykonywaną w ramach obowiązkowej transakcji rozproszonej. Właściwość TransactionScopeRequired wskazuje, że metoda jest wykonywana w ramach transakcji obiektu wywołującego, a TransactionAutoComplete właściwość wskazuje, że jeśli nie wystąpią nieobsługiwane wyjątki, transakcja zatwierdza automatycznie. Jeśli wystąpi nieobsługiwany wyjątek, transakcja zostanie przerwana.
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
Uwagi
Użyj atrybutu OperationBehaviorAttribute , aby wskazać zachowanie wykonania specyficzne dla operacji, które ma operacja podczas wykonywania. (Aby określić zachowanie wykonywania na poziomie usługi, użyj atrybutu ServiceBehaviorAttribute ).
Uwaga
Można również użyć OperationBehaviorAttribute polecenia , aby skonfigurować operację kontraktu wywołania zwrotnego w aplikacji klienckiej dwukierunkowej. W przypadku użycia operacji wywołania zwrotnego ReleaseInstanceMode właściwość musi być None lub wyjątek InvalidOperationException jest zgłaszany w czasie wykonywania.
Atrybut OperationBehaviorAttribute jest funkcją modelu programowania Windows Communication Foundation (WCF), która umożliwia typowe funkcje, które deweloperzy w przeciwnym razie muszą zaimplementować samodzielnie.
Właściwość AutoDisposeParameters określa, czy obiekty parametrów przekazane do operacji są usuwane po zakończeniu operacji.
Właściwość określa, czy transakcja TransactionAutoComplete , w której jest wykonywana metoda, jest automatycznie zatwierdzana, jeśli nie występują nieobsługiwane wyjątki.
Właściwość TransactionScopeRequired określa, czy metoda musi zostać wykonana w ramach transakcji.
Właściwość Impersonation określa, czy operacja usługi może, musi lub nie może personifikować tożsamości obiektu wywołującego.
Właściwość ReleaseInstanceMode określa, kiedy obiekty usługi są poddawane recyklingu podczas procesu wywołania metody.
Konstruktory
OperationBehaviorAttribute() |
Inicjuje nowe wystąpienie klasy OperationBehaviorAttribute. |
Właściwości
AutoDisposeParameters |
Pobiera lub ustawia wartość, która wskazuje, czy parametry mają być automatycznie usuwane. |
Impersonation |
Pobiera lub ustawia wartość wskazującą poziom personifikacji obiektu wywołującego, który obsługuje operacja. |
ReleaseInstanceMode |
Pobiera lub ustawia wartość, która wskazuje, kiedy w trakcie wywołania operacji w celu odtworzenia obiektu usługi. |
TransactionAutoComplete |
Pobiera lub ustawia wartość wskazującą, czy automatycznie ukończyć bieżący zakres transakcji, jeśli nie wystąpią nieobsługiwane wyjątki. |
TransactionScopeRequired |
Pobiera lub ustawia wartość, która wskazuje, czy metoda wymaga zakresu transakcji dla jego wykonania. |
TypeId |
Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego Attributeelementu . (Odziedziczone po Attribute) |
Metody
Equals(Object) |
Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi. (Odziedziczone po Attribute) |
GetHashCode() |
Zwraca wartość skrótu dla tego wystąpienia. (Odziedziczone po Attribute) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
IsDefaultAttribute() |
Podczas zastępowania w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną dla klasy pochodnej. (Odziedziczone po Attribute) |
Match(Object) |
Po przesłonięciu w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi. (Odziedziczone po Attribute) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |