Implementowanie Menedżera zasobów

Poszczególne zasoby używane w transakcji jest zarządzane przez Menedżera zasobów, których działania są koordynowany 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łe lub nietrwała danych. Trwałość (lub odwrotnie niestabilności ich) zasobu menedżera odwołuje się do tego, czy Menedżera zasobów obsługuje odzyskiwanie po awarii. Jeśli Menedżera zasobów obsługuje odzyskiwanie po awarii, utrzymuje danych do trwałego magazynu podczas fazy 1. (przygotowanie) tak, aby w przypadku awarii Menedżera zasobów, można ponownie zarejestrować transakcji po odzyskiwania i wykonać odpowiednie akcje w oparciu o powiadomienia otrzymane z menedżerem transakcji. Ogólnie rzecz biorąc, menedżerowie zasobów nietrwałych zarządzają nietrwałymi zasobami, takimi jak struktura danych w pamięci (na przykład tabela transacted-hashtable w pamięci) i trwałe menedżery zasobów zarządzają zasobami, które mają bardziej trwały magazyn zapasowy (na przykład bazę danych, której magazyn zapasowy jest dyskiem).

Aby zasób, aby uczestniczyć w transakcji należy zarejestrować w transakcji. Klasa Transaction definiuje zestaw metod, których nazwy zaczynają się od Enlist , które zapewniają tę funkcję. Różne metody rejestracji odpowiadają różnym typom rejestracji, które może mieć menedżer zasobów. W szczególności użyj EnlistVolatile metody dla lotnych zasoby i EnlistDurable metody dla trwałego zasobów. Dla uproszczenia, po podjęciu decyzji, czy użyć EnlistDurable metody lub EnlistVolatile na podstawie obsługi trwałości zasobu, należy zarejestrować zasób, aby wziąć udział w dwufazowym zatwierdzaniu (2PC), implementując IEnlistmentNotification interfejs dla menedżera zasobów. Aby uzyskać więcej informacji na temat 2PC, zobacz Zatwierdzanie transakcji w jednej fazie i wielofazowej.

Przez wywołanie tej metody, Menedżer zasobów zapewnia ona pobiera wywołania zwrotne z menedżerem transakcji po zatwierdzeniu lub przerwaniu transakcji. Istnieje jedno wystąpienie IEnlistmentNotification na rejestracji. Zazwyczaj istnieje jedna rejestracja na transakcję, ale menedżer zasobów może wybrać rejestrację wiele razy w tej samej transakcji.

Po rejestracji Menedżera zasobów odpowiada na żądania transakcji. Menedżer zasobów trwałe przechowuje wystarczających informacji do pozwalać na jego cofnąć lub ponowić transakcji pracy zasobów, że zarządza. Istnieje wiele sposobów, w tym; przechowywanie wersji danych lub utrzymywanie dziennika zmian są dwie metody wspólne.

Gdy aplikacja zatwierdzi transakcję, menedżer transakcji inicjuje protokół zatwierdzania dwufazowego. Menedżer transakcji najpierw pyta, czy każdy Menedżera zasobów Jeśli jest gotowa do zatwierdzania transakcji. Menedżer zasobów musi przygotowania do zatwierdzenia — jej przygotowuje się do zatwierdzenia lub przerwania transakcji.

W fazie przygotowanie Menedżera zasobów trwałe rejestruje stara i Nowa danych w magazynie stabilna, dzięki czemu Menedżera zasobów można go odzyskać nawet w przypadku awarii systemu. Jeśli Menedżera zasobów można przygotować, informuje menedżera transakcji jego głos na zatwierdzenia lub przerwania transakcji. Jeśli jakikolwiek menedżer zasobów zgłasza niepowodzenie przygotowania, menedżer transakcji wysyła polecenie wycofania do każdego menedżera zasobów i wskazuje niepowodzenie zatwierdzenia w aplikacji.

Po przygotowaniu Menedżera zasobów musi czekać, aż otrzyma zatwierdzania lub przerwania wywołania zwrotnego z menedżerem transakcji w fazie 2. Zazwyczaj cały protokół przygotowywania i zatwierdzania kończy się w ułamku sekundy. Jeśli występują awarie systemu lub łączności, zatwierdzania lub przerwania powiadomień nie może pojawić się dla minuty lub godziny. W tym okresie Menedżera zasobów jest w stanie wątPLiwości wyniku transakcji. Nie wiedzieć, czy zatwierdzeniu lub przerwaniu transakcji. Menedżer zasobów jest w stanie wątPLiwości transakcji, zapewnia dane zmodyfikowany przez utrzymywanie transakcji zablokowane, a tym samym izolowanie te zmiany innych transakcji.

Gdy Menedżer zasobów nie powiodło się, wszystkich jej znajdujących się w wykazie transakcji zostało przerwane z wyjątkiem tych, które zostały przygotowane lub zadeklarowane przed awarii. Po ponownym uruchomieniu Menedżera zasobów trwałe rekonstruuje zatwierdzone stanu zasobów, którymi zarządza pobierając prepare informacje zapisane w fazie przygotowania i zatwierdzane lub przerywa daną transakcję.

Podsumowanie Protokół dwufazowego i menedżerów zasobów połączyć wykonywanie transakcji częściowych i trwałe.

Transaction Klasa udostępnia także EnlistPromotableSinglePhase metodę, aby zarejestrować awansowanie jednego etapu rejestracji (PSPE). Dzięki temu trwałe zasobu manager (MB), hosta i "własnością" transakcji, która może zostać później przekazany do były zarządzane przez MSDTC, jeśli to konieczne. Aby uzyskać więcej informacji na ten temat, zobacz Optymalizacja przy użyciu zatwierdzania jednofazowego i promotable jednofazowego powiadomienia.

W tej sekcji

W następujących tematach opisano kroki zwykle następuje Menedżera zasobów.

Rejestrowanie zasobów jako uczestników transakcji

Opisuje, jak trwałe zasobu można zarejestrować w transakcji.

Zatwierdzanie transakcji jednofazowe i wielofazowe

Opisuje, jak Zatwierdź powiadomień i przygotowania zatwierdzanie z użytkownikiem odpowiada Menedżera zasobów.

Odzyskiwanie systemu

Opisuje sposób trwałego menedżerem przywraca po awarii.

Poziomy zaufania zabezpieczeń podczas uzyskiwania dostępu do zasobów

Opisuje sposób trzy poziomy zaufania System.Transactions ograniczyć dostęp dla typów zasobów, które System.Transactions przedstawia.

Optymalizacja za pomocą zatwierdzania jednofazowego i umożliwiającego awansowanie powiadomienia jednofazowego

Opisuje rozwiązania optymalizacji dostępne dla implementacji menedżerów zasobów.