OperationBehaviorAttribute Osztály

Definíció

Egy szolgáltatásmetódus helyi végrehajtási viselkedését adja meg.

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
Öröklődés
OperationBehaviorAttribute
Attribútumok
Megvalósítás

Példák

Az alábbi példakód egy kötelező elosztott tranzakción belül végrehajtott műveletet mutat be. A TransactionScopeRequired tulajdonság azt jelzi, hogy a metódus a hívó tranzakciója alatt fut, a TransactionAutoComplete tulajdonság pedig azt jelzi, hogy ha nincs kezeletlen kivétel, a tranzakció automatikusan véglegesíti. Ha nem kezelt kivétel történik, a tranzakció megszakad.

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

Megjegyzések

OperationBehaviorAttribute Az attribútum használatával jelezheti, hogy a művelet milyen műveletspecifikus végrehajtási viselkedést mutat a végrehajtáskor. (A végrehajtási viselkedés szolgáltatásszinten való megadásához használja az ServiceBehaviorAttribute attribútumot.)

Note

A visszahívási szerződés műveletét kétoldalas ügyfélalkalmazásban is OperationBehaviorAttribute konfigurálhatja. Visszahívási művelet esetén a ReleaseInstanceMode tulajdonságnak kell lennie None , vagy InvalidOperationException futásidőben kivételt kell eredményeznie.

A OperationBehaviorAttribute attribútum egy Windows kommunikációs alaprendszer (WCF) programozási modell funkció, amely lehetővé teszi azokat a gyakori funkciókat, amelyeket egyébként a fejlesztőknek maguknak kell implementálniuk.

  • A AutoDisposeParameters tulajdonság azt szabályozza, hogy a művelet végrehajtásakor a paraméterobjektumok törlődjenek-e.

  • A TransactionAutoComplete tulajdonság azt határozza meg, hogy a metódust végrehajtó tranzakció automatikusan le legyen-e véglegesítva, ha nem kezeletlen kivételek nem fordulnak elő.

  • A TransactionScopeRequired tulajdonság azt határozza meg, hogy egy metódusnak végre kell-e hajtania egy tranzakción belül.

  • A Impersonation tulajdonság azt határozza meg, hogy a szolgáltatásművelet képes-e vagy sem a hívó identitásának megszemélyesítésére.

  • A ReleaseInstanceMode tulajdonság azt határozza meg, hogy a metódushívási folyamat során mikor történik újra a szolgáltatásobjektumok újrahasznosítása.

Konstruktorok

Name Description
OperationBehaviorAttribute()

Inicializálja a OperationBehaviorAttribute osztály új példányát.

Tulajdonságok

Name Description
AutoDisposeParameters

Lekéri vagy beállít egy értéket, amely jelzi, hogy a paramétereket automatikusan el kell-e adni.

Impersonation

Lekéri vagy beállít egy értéket, amely jelzi a hívó megszemélyesítésének szintjét, amelyet a művelet támogat.

ReleaseInstanceMode

Lekéri vagy beállítja azt az értéket, amely azt jelzi, hogy egy művelethívás során a szolgáltatásobjektum újrahasznosítása mikor történik.

TransactionAutoComplete

Lekéri vagy beállít egy értéket, amely jelzi, hogy automatikusan befejezze-e az aktuális tranzakció hatókörét, ha nincsenek kezeletlen kivételek.

TransactionScopeRequired

Lekéri vagy beállít egy értéket, amely jelzi, hogy a metódushoz tranzakciós hatókör szükséges-e a végrehajtásához.

TypeId

Ha származtatott osztályban implementálják, ehhez egy egyedi azonosítót Attributekap.

(Öröklődés forrása Attribute)

Metódusok

Name Description
Equals(Object)

Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e egy adott objektummal.

(Öröklődés forrása Attribute)
GetHashCode()

A példány kivonatkódját adja vissza.

(Öröklődés forrása Attribute)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
IsDefaultAttribute()

Ha egy származtatott osztályban felül van bírálva, azt jelzi, hogy a példány értéke-e a származtatott osztály alapértelmezett értéke.

(Öröklődés forrása Attribute)
Match(Object)

Származtatott osztály felülírásakor egy olyan értéket ad vissza, amely jelzi, hogy ez a példány egy adott objektummal egyenlő-e.

(Öröklődés forrása Attribute)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

Explicit interfész-implementációk

Name Description
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Névkészletet képez le a küldési azonosítók megfelelő készletére.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Lekéri egy objektum típusadatait, amelyek a felület típusadatainak lekérésére használhatók.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1).

(Öröklődés forrása Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz.

(Öröklődés forrása Attribute)
IOperationBehavior.AddBindingParameters(OperationDescription, BindingParameterCollection)

Implementálja a metódust AddBindingParameters(OperationDescription, BindingParameterCollection) .

IOperationBehavior.ApplyClientBehavior(OperationDescription, ClientOperation)

Implementálja az ügyfélművelet viselkedését.

IOperationBehavior.ApplyDispatchBehavior(OperationDescription, DispatchOperation)

Implementálja a szolgáltatásművelet viselkedését.

IOperationBehavior.Validate(OperationDescription)

Implementálja az érvényesítési viselkedést.

A következőre érvényes: