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.
In diesem Abschnitt wird beschrieben, wie Sie die vom System.Transactions Namespace bereitgestellten Features verwenden können, um Ihre eigene Transaktionsanwendung und den Ressourcen-Manager zu schreiben. In diesem Abschnitt wird insbesondere erläutert, wie Sie eine Transaktion (lokal oder verteilt) mit einem oder mehreren Teilnehmern erstellen und daran teilnehmen.
Übersicht über System.Transactions
Die von den Klassen im System.Transactions Namespace bereitgestellte Infrastruktur macht die Transaktionsprogrammierung einfach und effizient, indem Transaktionen unterstützt werden, die in SQL Server, ADO.NET, Message Queuing (MSMQ) und microsoft Distributed Transaction Coordinator (MSDTC) initiiert wurden. Der System.Transactions Namespace stellt sowohl ein explizites Programmiermodell basierend auf der Transaction Klasse als auch ein implizites Programmiermodell mithilfe der TransactionScope Klasse bereit, 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 bietet außerdem Typen für die Implementierung eines Ressourcen-Managers. Ein Ressourcenmanager verwaltet dauerhafte oder veränderliche Daten, die in einer Transaktion verwendet werden, und arbeitet in Zusammenarbeit mit dem Transaktionsmanager, um der Anwendung eine Garantie für Atomität und Isolation zu bieten. Der Transaktionsmanager, der von der System.Transactions Infrastruktur bereitgestellt wird, unterstützt Transaktionen mit mehreren veränderbaren Ressourcen oder einer einzelnen dauerhaften Ressource. 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 wichtige Möglichkeiten, wie die System.Transactions Infrastruktur eine verbesserte Leistung bietet.
Dynamische Eskalation, die sicherstellt, dass die System.Transactions Infrastruktur nur die MSDTC verwendet, wenn eine Transaktion sich über mehrere verteilte Ressourcen erstreckt. Weitere Informationen zur dynamischen Eskalation. siehe Thema "Transaktionsverwaltungseskalation ".
Promotable Enlistments, mit denen eine Ressource, z. B. eine Datenbank, den Besitz der Transaktion übernehmen kann, wenn es sich um die einzige Entität handelt, die an der Transaktion teilnimmt. Gegebenenfalls kann die System.Transactions-Infrastruktur die Verwaltung der Transaktion zu einem späteren Zeitpunkt an MSDTC eskalieren. Dadurch wird die Wahrscheinlichkeit der Verwendung des MSDTC weiter reduziert. 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ügbaren Ressourcentypen einschränken. Weitere Informationen zu den verschiedenen Vertrauensstufen finden Sie unter "Sicherheitsvertrauensstufen" im Zugriff auf Ressourcen.
In diesem Abschnitt
Schreiben einer Transaktionsanwendung
Der System.Transactions Namespace stellt zwei Modelle zum Erstellen von Transaktionsanwendungen bereit. Das Implementieren einer impliziten Transaktion mithilfe des Transaktionsbereichs beschreibt, wie der System.Transactions Namespace das Erstellen impliziter Transaktionen mithilfe der TransactionScope Klasse unterstützt.
Das Implementieren einer expliziten Transaktion mit CommittableTransaction beschreibt, wie der System.Transactions Namespace explizite Transaktionen mithilfe der CommittableTransaction Klasse unterstützt.
Weitere Themen zum Schreiben einer Transaktionsanwendung finden Sie unter Schreiben einer Transaktionsanwendung.
Implementieren eines Ressourcen-Managers
Informationen zum Implementieren eines Ressourcenmanagers, der an einer Transaktion teilnehmen kann, finden Sie unter Implementieren eines Ressourcen-Managers. In diesem Abschnitt werden die Einbindung einer Ressource, das Festschreiben einer Transaktion, die Wiederherstellung nach einem Fehler und bewährte Methoden zur Optimierung behandelt.