Udostępnij przez


Podstawy transakcji

Transakcje wiążą ze sobą wiele zadań. Załóżmy na przykład, że aplikacja wykonuje dwa zadania. Najpierw tworzy nową tabelę w bazie danych. Następnie wywołuje wyspecjalizowany obiekt do zbierania, formatowania i wstawiania danych do nowej tabeli. Te dwa zadania są powiązane, a nawet współzależne, tak aby uniknąć tworzenia nowej tabeli, chyba że można wypełnić je danymi. Wykonywanie obu zadań w zakresie pojedynczej transakcji wymusza połączenie między nimi. Jeśli drugie zadanie zakończy się niepowodzeniem, pierwsze zadanie zostanie wycofane do punktu przed utworzeniem nowej tabeli.

Aby zapewnić przewidywalne zachowanie, wszystkie transakcje muszą mieć podstawowe właściwości ACID (atomowe, spójne, izolowane i odporne na awarie). Te właściwości wzmacniają rolę transakcji o znaczeniu krytycznym jako koncepcji wszystko albo nic. Aby uzyskać więcej informacji na temat ACID, zobacz Właściwości ACID. Podsumowując, ACID gwarantuje, że zestaw powiązanych zadań zakończy się powodzeniem lub niepowodzeniem jako jednostka. W terminologii przetwarzania transakcji, transakcja albo się zatwierdza, albo jest anulowana. Aby transakcja została zatwierdzona, wszyscy uczestnicy muszą zagwarantować, że każda zmiana w danych będzie trwała. Zmiany muszą zostać zachowane niezależnie awarie systemu lub inne nieprzewidziane zdarzenia. Jeśli nawet jeden uczestnik nie dokona tej gwarancji, cała transakcja zakończy się niepowodzeniem. Wszystkie zmiany danych w ramach transakcji są cofane do określonego punktu.

Transakcję można ograniczyć do pojedynczego zasobu danych, takiego jak baza danych lub kolejka komunikatów. W tym scenariuszu transakcja lokalna jest zarządzana przez Menedżera transakcji dostarczonego przez System.Transactions program , co generuje wzrost wydajności. Kontrolowane przez zasób danych te transakcje są wydajne i łatwe do zarządzania.

Transakcje mogą również obejmować wiele zasobów danych. Transakcje rozproszone umożliwiają połączenie kilku odrębnych operacji występujących w różnych systemach jako jedno działanie, które się udaje lub nie udaje. W tym scenariuszu transakcje są koordynowane przez koordynatora transakcji rozproszonych firmy Microsoft (MSDTC), który znajduje się w każdym systemie.

Podczas tworzenia aplikacji transakcyjnej przy użyciu klas dostarczonych przez System.Transactions, nie musisz martwić się o rodzaj potrzebnych transakcji ani o menedżera transakcji. Infrastruktura System.Transactions automatycznie zarządza tymi elementami.

Podczas tworzenia transakcji można określić poziom izolacji, który ma zastosowanie do transakcji. Poziom izolacji zdefiniowany przez wyliczenie IsolationLevel określa, jaki poziom dostępu do danych będą miały inne transakcje, których dotyczy Twoja transakcja.

Transakcje można tworzyć przy użyciu ADO.NET, System.EnterpriseServices, lub modelu programowania transakcyjnego dostarczonego przez przestrzeń nazw System.Transactions. W temacie Features Provided by System.Transactions omówiono funkcje, których można użyć do pisania aplikacji transakcyjnej System.Transactions przy użyciu przestrzeni nazw.

Zobacz także