Von System.Transactions bereitgestellte Funktionen
[Dieses Thema ist Teil der Vorabdokumentation und kann in zukünftigen Versionen geändert werden. Leere Themen wurden als Platzhalter eingefügt.]
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 zum Erstellen einer Transaktionsanwendung mit diesen beiden Modellen 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 finden Sie im Thema Eskalation 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. Erweiterbare Eintragungen werden ausführlich im Thema Optimierung mit Einphasencommit und heraufstufbarer Einphasenbenachrichtigung behandelt.
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 Vertrauensebenen für Sicherheit beim Zugriff auf Ressourcen.
In diesem Abschnitt
Erstellen einer Transaktionsanwendung
Der System.Transactions-Namespace stellt zwei Modelle zum Erstellen von Transaktionsanwendungen bereit. Implementieren einer impliziten Transaktion mit Transaktionsbereich beschreibt, wie der System.Transactions-Namespace das Erstellen impliziter Transaktionen mit der TransactionScope-Klasse unterstützt.
Implementieren einer expliziten Transaktion mit CommittableTransaction beschreibt, wie der System.Transactions-Namespace die Erstellung expliziter Transaktionen mithilfe der CommittableTransaction-Klasse unterstützt.
Weitere Themen zum Schreiben einer Transaktionsanwendung finden Sie unter Schreiben einer Transaktionsanwendung.
Implementieren eines Ressourcen-Managers
Informationen dazu, wie Sie einen Ressourcen-Manager implementieren, der an einer Transaktion teilnehmen kann, finden Sie unter Implementieren eines Ressourcen-Managers. In diesem Abschnitt werden das Eintragen einer Ressource, das Durchführen eines Transaktionscommits, die Wiederherstellung nach einem Fehler und bewährte Methoden für die Optimierung behandelt.