Von System.Transactions bereitgestellte Funktionen
In diesem Abschnitt wird beschrieben, wie Sie anhand der Funktionen, die der System.Transactions-Namespace bereitstellt, Ihre eigene Transaktionsanwendung und Ihren eigenen Ressourcen-Manager schreiben können. In diesem Abschnitt wird insbesondere darauf eingegangen, wie eine (lokale oder verteilte) Transaktion erstellt wird und ein oder mehrere Teilnehmer daran teilnehmen können.
Übersicht über System.Transactions
Die Infrastruktur, die von den Klassen im System.Transactions-Namespace bereitgestellt werden, erleichtern die Transaktionsprogrammierung und machen sie effizienter, da von SQL Server, ADO.NET, Message Queuing (MSMQ) und Microsoft Distributed Transaction Coordinator (MSDTC) gestartete Transaktionen unterstützt werden. Der System.Transactions-Namespace bietet sowohl ein explizites Programmiermodell, das auf der Transaction-Klasse basiert, als auch ein implizites Programmiermodell, das die TransactionScope-Klasse verwendet, in der Transaktionen automatisch von der Infrastruktur verwaltet werden. Weitere Informationen darüber, wie eine Transaktionsanwendung mithilfe dieser beiden Modelle erstellt wird, finden Sie unter Schreiben einer Transaktionsanwendung.
Der System.Transactions-Namespace stellt auch Typen zur Implementierung eines Ressourcen-Managers bereit. Mit einem Ressourcen-Manager werden dauerhafte oder flüchtige in einer Transaktion verwendete Daten verwaltet. Zusammen mit dem Transaktions-Manager gewährleistet der Ressourcen-Manager Unteilbarkeit und Isolation für die Anwendung. Der von der System.Transactions-Infrastruktur bereitgestellte Transaktions-Manager unterstützt Transaktionen, die mehrere flüchtige Ressourcen oder eine einzelne dauerhafte Ressource umfassen. Weitere Informationen zum Implementieren eines Ressourcen-Managers finden Sie unter Implementieren eines Ressourcen-Managers.
Der Transaktions-Manager eskaliert zudem lokale Transaktionen durch Koordination mit einem datenträgerbasierten Transaktions-Manager wie DTC transparent zu verteilten Transaktionen, wenn sich ein zusätzlicher dauerhafter Ressourcen-Manager bei der Transaktion einträgt. Es gibt zwei grundlegende Methoden, mit der System.Transactions-Infrastruktur eine verbesserte Leistung zu erreichen.
Dynamische Eskalation: Sie stellt sicher, dass die System.Transactions-Infrastruktur nur MSDTC verwendet, wenn die Transaktion mehrere verteilte Ressourcen betrifft. Weitere Informationen zur dynamischen Eskalation siehe Thema Eskalationsszenario der Transaktionsverwaltung.
Erweiterbare Eintragungen: Ermöglichen es einer Ressource (z.B. einer Datenbank), Eigentümer der Transaktion zu werden, wenn sie die einzige Entität ist, die an der Transaktion teilnimmt. Gegebenenfalls kann die System.Transactions-Infrastruktur die Verwaltung der Transaktion zu einem späteren Zeitpunkt an MSDTC eskalieren. Auch dies reduziert die Zahl der Fälle, in denen MSDTC verwendet wird. Ausführliche Informationen zu erweiterbaren Eintragungen erhalten Sie im Thema Optimierung mit einphasigem Commit und promotbarer einphasiger Benachrichtigung.
Der System.Transactions-Namespace definiert drei Vertrauensebenen – AllowPartiallyTrustedCallers (APTCA), DistributedTransactionPermission (DTP) und volle Vertrauenswürdigkeit –, die den Zugriff auf die verfügbar gemachten Ressourcentypen einschränken. Weitere Informationen zu den verschiedenen Vertrauensebenen finden Sie unter Sicherheitsvertrauensstufen beim Zugriff auf Ressourcen.
In diesem Abschnitt
Erstellen einer Transaktionsanwendung
Der System.Transactions-Namespace stellt zwei Modelle zum Erstellen von Transaktionsanwendungen bereit. Die Implementierung einer impliziten Transaktion mit Transaction Scope beschreibt, wie der System.Transactions Namespace die Erstellung impliziter Transaktionen mit der TransactionScope Klasse unterstützt.
Die Implementierung einer expliziten Transaktion mit CommittableTransaction beschreibt, wie der System.Transactions Namespace die Erstellung expliziter Transaktionen mit dieser CommittableTransaction Klasse unterstützt.
Weitere Themen, in denen das Erstellen einer Transaktionsanwendung beschrieben wird, finden Sie unter Schreiben einer transaktionalen Anwendung.
Implementieren eines Ressourcen-Managers
Informationen dazu, wie Sie einen Ressourcen-Manager implementieren, der an einer Transaktion teilnehmen kann, finden Sie unter Implementieren eines Ressourcenmanagers. In diesem Abschnitt werden das Eintragen einer Ressource, das Durchführen eines Transaktionscommit, die Wiederherstellung nach einem Fehler und Best Practices für die Optimierung behandelt.