Freigeben über


Grundlagen der Transaktion

Transaktionen binden mehrere Vorgänge zusammen. Stellen Sie sich z. B. vor, dass eine Anwendung zwei Aufgaben ausführt. Zunächst wird eine neue Tabelle in einer Datenbank erstellt. Als Nächstes ruft es ein spezielles Objekt auf, um Daten zu sammeln, zu formatieren und in die neue Tabelle einzufügen. Diese beiden Aufgaben sind miteinander verknüpft und sogar voneinander abhängig, sodass Sie das Erstellen einer neuen Tabelle vermeiden möchten, es sei denn, Sie können sie mit Daten ausfüllen. Durch das Ausführen beider Aufgaben im Rahmen einer einzelnen Transaktion wird die Verbindung zwischen diesen vorgängen erzwungen. Wenn der zweite Vorgang fehlschlägt, wird der erste Vorgang auf einen Punkt zurückgesetzt, bevor die neue Tabelle erstellt wurde.

Um ein vorhersehbares Verhalten sicherzustellen, müssen alle Transaktionen über die grundlegenden ACID-Eigenschaften verfügen (atomische, konsistente, isolierte und dauerhafte). Diese Eigenschaften stärken die Rolle von geschäftskritischen Transaktionen als Alles-oder-nichts-Prinzipien. Weitere Informationen zu ACID finden Sie unter ACID Properties. Zusammenfassend garantiert ACID, dass eine Reihe verwandter Vorgänge entweder erfolgreich ist oder als Einheit fehlschlägt. In der Terminologie der Transaktionsverarbeitung heißt dies, dass für eine Transaktion entweder ein Commit oder ein Rollback durchgeführt wird. Damit eine Transaktion abgeschlossen werden kann, müssen alle Teilnehmer garantieren, dass Änderungen an Daten dauerhaft sind. Änderungen müssen auch im Fall von Systemausfällen oder anderen unvorhergesehenen Ereignissen dauerhaft sein. Wenn selbst ein einzelner Teilnehmer diese Garantie nicht übernehmen kann, schlägt die gesamte Transaktion fehl. Alle Änderungen an Daten im Bereich der Transaktion werden auf einen bestimmten Rücksetzungspunkt zurückgesetzt.

Eine Transaktion kann auf eine einzelne Datenressource beschränkt werden, z. B. eine Datenbank oder eine Nachrichtenwarteschlange. In diesem Szenario wird die lokale Transaktion vom Transaktions-Manager von System.Transactions verwaltet, wodurch ein Leistungsgewinn erzielt wird. Gesteuert durch die Datenressource sind diese Transaktionen effizient und einfach zu verwalten.

Transaktionen können auch mehrere Datenressourcen umfassen. Verteilte Transaktionen bieten Ihnen die Möglichkeit, mehrere unterschiedliche Vorgänge, die auf verschiedenen Systemen auftreten, in eine einzelne Pass- oder Fail-Aktion zu integrieren. In diesem Szenario werden die Transaktionen vom Microsoft Distributed Transaction Coordinator (MSDTC) koordiniert, der sich in jedem System befindet.

Wenn Sie eine transactionale Anwendung mit den von System.Transactions bereitgestellten Klassen entwickeln, müssen Sie sich keine Gedanken darüber machen, welche Art von Transaktionen Sie benötigen, oder über den Transaktionsmanager. Die System.Transactions Infrastruktur verwaltet diese automatisch für Sie.

Wenn Sie eine Transaktion erstellen, können Sie die Isolationsstufe angeben, die für die Transaktion gilt. Die isolationsstufe, die durch die IsolationLevel Enumeration definiert wird, bestimmt, welche Zugriffsebene andere Transaktionen für die von Ihrer Transaktion betroffenen Daten aufweisen.

Sie können Transaktionen mit ADO.NET, System.EnterpriseServicesoder dem vom System.Transactions Namespace bereitgestellten Transaktionsprogrammiermodell erstellen. Im Thema "System.Transactions" werden die Features erläutert, die Sie zum Schreiben einer Transaktionsanwendung mit dem System.Transactions Namespace verwenden können.

Siehe auch