Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Każdy zasób używany w transakcji jest zarządzany przez menedżera zasobów, którego akcje są koordynowane przez menedżera transakcji. Menedżerowie zasobów współpracują z menedżerem transakcji, aby zapewnić aplikacji gwarancję niepodzielności i izolacji. Microsoft SQL Server, trwałe kolejki komunikatów, tabele skrótów w pamięci to wszystkie przykłady menedżerów zasobów.
Menedżer zasobów zarządza trwałymi lub nietrwałymi danymi. Trwałość (lub odwrotnie zmienność) menedżera zasobów odnosi się do tego, czy menedżer zasobów obsługuje odzyskiwanie po awarii. Jeśli menedżer zasobów obsługuje odzyskiwanie po awarii, zachowuje dane w trwałym magazynie w Fazie 1 (przygotowanie), tak aby w razie awarii menedżer zasobów mógł ponownie zarejestrować się w transakcji po odzyskiwaniu i wykonać odpowiednie akcje zgodnie z powiadomieniami otrzymanymi od menedżera transakcji. Ogólnie rzecz biorąc, menedżerowie zasobów nietrwałych zarządzają zasobami, które są ulotne, takimi jak struktura danych w pamięci (na przykład przetwarzana tabela haszująca w pamięci), natomiast menedżerowie zasobów trwałych zarządzają zasobami z bardziej trwałym zapleczem, takim jak baza danych z zapleczem na dysku.
Aby zasób brał udział w transakcji, musi zarejestrować się w transakcji. Klasa Transaction definiuje zestaw metod, których nazwy zaczynają się od Enlist i które zapewniają tę funkcjonalność. Różne Enlist metody odpowiadają różnym typom rejestracji, które może mieć menedżer zasobów. W szczególności używasz EnlistVolatile metod dla nietrwałych zasobów i EnlistDurable metody dla zasobów trwałych. Dla ułatwienia, po podjęciu decyzji, czy użyć metody EnlistDurable czy EnlistVolatile na podstawie wsparcia trwałości zasobu, należy zarejestrować zasób do uczestnictwa w dwufazowym zatwierdzaniu (2PC) poprzez implementację interfejsu IEnlistmentNotification dla menedżera zasobów. Aby uzyskać więcej informacji na temat 2PC, zobacz Zatwierdzanie transakcji w Single-Phase i fazach wieloetapowych.
Rejestrując się, menedżer zasobów zapewnia, że otrzymuje odpowiedzi zwrotne od menedżera transakcji, gdy transakcja zostanie zatwierdzona lub przerwana. Istnieje jedno wystąpienie IEnlistmentNotification na werbunek. Zazwyczaj istnieje jedna rejestracja na transakcję, ale menedżer zasobów może wybrać rejestrację wiele razy w tej samej transakcji.
Po rejestracji menedżer zasobów odpowiada na żądania transakcji. Trwały menedżer zasobów przechowuje wystarczająco dużo informacji, aby umożliwić cofnięcie lub ponowne wykonanie transakcji na zasobach, którymi zarządza. Istnieje wiele sposobów, aby to zrobić; przechowywanie wersji danych lub przechowywanie dziennika zmian to dwie typowe techniki.
Gdy aplikacja zatwierdzi transakcję, menedżer transakcji inicjuje protokół zatwierdzania dwufazowego. Menedżer transakcji najpierw zapyta każdego menedżera zasobów, czy jest przygotowany do zatwierdzenia transakcji. Menedżer zasobów musi przygotować się do zatwierdzenia transakcji — przygotowuje się do jej zatwierdzenia lub przerwania.
W fazie przygotowywania trwały menedżer zasobów rejestruje stare i nowe dane w stabilnym magazynie, dzięki czemu menedżer zasobów może je odzyskać nawet wtedy, gdy system ulegnie awarii. Jeśli menedżer zasobów może przygotować się, informuje menedżera transakcji o głosowaniu w sprawie zatwierdzenia lub przerwania transakcji. Jeśli jakikolwiek menedżer zasobów zgłasza niepowodzenie w przygotowaniu, menedżer transakcji wysyła polecenie wycofania do każdego menedżera zasobów i wskazuje aplikacji, że zatwierdzenie się nie powiodło.
Po przygotowaniu menedżer zasobów musi poczekać, aż otrzyma zatwierdzenie lub przerwanie wywołania zwrotnego z menedżera transakcji w fazie 2. Zazwyczaj cały protokół przygotowywania i zatwierdzania kończy się w ułamku sekundy. Jeśli występują błędy systemu lub komunikacji, powiadomienie zatwierdzenia lub przerwania może nie zostać dostarczone przez minuty lub godziny. W tym okresie menedżer zasobów ma wątpliwości co do wyniku transakcji. System nie wie, czy transakcja zatwierdzona czy przerwana. Chociaż menedżer zasobów ma wątpliwości co do transakcji, przechowuje dane zmodyfikowane przez zablokowanie transakcji, co powoduje izolowanie tych zmian od innych transakcji.
Gdy menedżer zasobów zakończy się niepowodzeniem, wszystkie wymienione transakcje zostaną przerwane z wyjątkiem tych, które są przygotowane lub zatwierdzone przed awarią. Gdy trwały menedżer zasobów zostanie uruchomiony ponownie, rekonstruuje zatwierdzony stan zarządzanych zasobów, pobierając informacje o przygotowaniu zapisane w fazie przygotowania, a następnie zatwierdza lub przerywa te transakcje.
Podsumowując, dwufazowy protokół zatwierdzania i menedżerowie zasobów współdziałają, aby transakcje były atomowe i trwałe.
Klasa Transaction udostępnia również metodę EnlistPromotableSinglePhase rejestrowania Rejestracji Jednofazowej z Możliwością Awansowania (PSPE, Promotable Single Phase Enlistment). Umożliwia to trwałemu menedżerowi zasobów (RM) hostowanie i "posiadanie" transakcji, którą później można eskalować do zarządzania przez MSDTC w razie potrzeby. Aby uzyskać więcej informacji na ten temat, zobacz Optymalizacja przy użyciu zatwierdzania jednofazowego i promowalnego powiadomienia jednofazowego.
W tej Sekcji
Kroki, po których zazwyczaj następuje menedżer zasobów, zostały opisane w poniższych tematach.
Rejestrowanie zasobów jako uczestników transakcji
Opisuje sposób, w jaki zasób trwały lub nietrwały może przystąpić do transakcji.
Zatwierdzanie transakcji w Single-Phase i w trybie wielofazowym
Opisuje sposób, w jaki menedżer zasobów reaguje na powiadomienie o zatwierdzeniu i przygotuje zatwierdzenie.
Opisuje, jak menedżer zasobów trwałych odzyskuje po awarii.
Poziomy zaufania zabezpieczeń w uzyskiwaniu dostępu do zasobów
Opisuje, w jaki sposób trzy poziomy zaufania w systemie System.Transactions ograniczają dostęp do zasobów, które udostępnia System.Transactions.
Optymalizacja przy użyciu jednofazowego zatwierdzania i promowalnego powiadomienia jednofazowego
Przedstawia praktyki optymalizacji dostępne w implementacjach menedżerów zasobów.