Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ausgehend von einer bereits bestehenden DTC-Transaktion (Microsoft Distributed Transaction Coordinator) oder einer TIP-Transaktion (Transaction Internet Protocol) kann mit Hilfe des COM+-Features BYOT die Transaktionseigenschaft für den Kontext einer neuen COM+-Komponente festgelegt werden. Damit können einer COM+-Komponente Transaktionen zugeordnet werden, deren Lebensdauer entweder durch einen Transaktionsverarbeitungsmonitor, einen OTS (Object Transaction Service) oder ein Datenbankmanagement-System überwacht wird. BYOT lässt sich außerdem für die Integration von Transaktionen verwenden, die durch TIP verwaltet werden.
Hinweis Für das Programmieren von Geschäftskomponenten wird das Programmierungsmodell automatischer Transaktionen gegenüber dem von BYOT-Transaktionen bevorzugt. BYOT-Transaktionen sind mit Vorsicht zu verwenden. In bestimmten Situationen können sie zu einer Transaktion führen, die mehrere Synchronisierungsdomänen umfasst, da durch BYOT die Parallelisierung einer Transaktion ermöglicht wird.
Durch die BYOT-Klasse werden zwei Methoden offen gelegt: CreateWithTransaction und CreateWithTipTransaction. Im folgenden Beispiel wird gezeigt, wie ein Objekt erstellt wird, das die Transaktion eines anderen Objekts verwendet.
Veranschaulichung von BYOT
Imports System
Imports System.Reflection
Imports System.EnterpriseServices
<assembly: AssemblyKeyFile("BYOTDemo.snk")>
Public Class Base
Inherits ServicedComponent
Public Readonly Property Transaction() as Object
Get
Return ContextUtil.Transaction
End Get
End Property
End Class
<Transaction()> Public Class CTransaction1
Inherits Base
' Insert your transaction logic here.
End Class
<Transaction()> Public Class CTransaction2
Inherits Base
' Insert your transaction logic here.
End Class
Class BYOTDemonstration
Public Shared Sub Main()
' Create a transactional object, and then get its
' transaction.
Dim tx1 as New CTransaction1
Console.WriteLine("Created transaction1.")
Dim tx as Object = tx1.Transaction
Console.WriteLine("Got the transaction of transaction1.")
Dim tx2 as CTransaction2 = ctype(BYOT.CreateWithTransaction(tx, _ gettype(CTransaction2)),CTransaction2)
Console.WriteLine("Created transaction2 with the _
transaction of transaction1.")
End Sub
End Class
[C#]
using System;
using System.Reflection;
using System.EnterpriseServices;
[assembly: AssemblyKeyFileAttribute("byotdemo.snk")]
public class Base : ServicedComponent
{
public Object Transaction
{
get { return ContextUtil.Transaction; }
}
}
[Transaction]
public class CTransaction1 : Base
{
// Insert your transaction logic here.
}
[Transaction]
public class CTransaction2 : Base
{
// Insert your transaction logic here.
}
class BYOTDemonstration
{
static void Main()
{
/* Create a transactional object, and then get its
transaction. */
CTransaction1 tx1 = new CTransaction1();
Console.WriteLine("Created transaction1.");
Object tx = tx1.Transaction;
Console.WriteLine("Got the transaction of transaction1.");
CTransaction2 tx2 = (CTransaction2)BYOT.CreateWithTransaction(tx, typeof(CTransaction2));
Console.WriteLine("Created transaction2 using the transaction of transaction1.");
}
}
Makefile.bat
Das Beispiel wird wie folgt kompiliert:
sn –k BYOTDemo.snk
vbc /r:System.EnterpriseServices.dll BYOTDemo.vb
[C#]
sn –k BYOTDemo.snk
csc BYOTDemo.cs
Siehe auch
Zusammenfassung verfügbarer COM+-Dienste | System.EnterpriseServices-Namespace