Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Každý prostředek použitý v transakci je spravován správcem prostředků, jehož akce jsou koordinované správcem transakcí. Správci zdrojů pracují ve spolupráci se správcem transakcí, aby aplikaci poskytli záruku atomicity a izolace. Microsoft SQL Server, trvalé fronty zpráv a tabulky hash v paměti, to jsou příklady správců prostředků.
Správce prostředků spravuje trvalá nebo prchavá data. Stálost (nebo naopak nestálost) správce prostředků označuje, jestli správce prostředků podporuje zotavení po selhání. Pokud správce prostředků podporuje zotavení po selhání, zachová data v trvalém úložišti během fáze 1 (příprava), takže pokud správce prostředků přestane fungovat, může při obnovení znovu zahrnout transakce a provádět správné akce na základě oznámení přijatých od správce transakcí. Obecně platí, že volatilní správci prostředků spravují nestálé prostředky, jako je struktura dat v paměti (například transacted-hashtable v paměti), a správci trvalých prostředků spravují prostředky, které mají trvalejší záložní úložiště (například databáze, jejíž záložní úložiště je disk).
Aby se prostředek mohl účastnit transakce, musí být zařazen do transakce. Třída Transaction definuje sadu metod, jejichž názvy začínají Enlist , které poskytují tuto funkci. Různé Enlist metody odpovídají různým typům zařazení, které může mít správce prostředků. Konkrétně používáte EnlistVolatile metody pro nestálé prostředky a metodu EnlistDurable pro odolné prostředky. Pro zjednodušení byste se měli po rozhodnutí, zda použít metodu EnlistDurable nebo EnlistVolatile na základě podpory stálosti vašeho prostředku, pokusit zapojit prostředek do dvoufázového potvrzení (2PC) implementací rozhraní IEnlistmentNotification pro správce prostředků. Další informace o 2PC naleznete v tématu Potvrzení transakce v Single-Phase a vícefázové.
Při registraci správce prostředků zajistí, že obdrží zpětná volání od správce transakcí, když se transakce potvrdí nebo přeruší. Pro každé přihlášení existuje jedna instance IEnlistmentNotification. Obvykle existuje jeden zařazení na transakci, ale správce prostředků může zvolit zařazení vícekrát do stejné transakce.
Po zařazení správce prostředků odpoví na požadavky transakce. Trvalý správce prostředků ukládá dostatek informací potřebných k tomu, aby mohl vrátit zpět nebo znovu provést činnost transakce na jím spravovaných prostředcích. Existuje mnoho způsobů, jak to udělat; Uchovávání verzí dat nebo uchovávání protokolu změn jsou dvě běžné techniky.
Když aplikace potvrdí transakci, správce transakcí zahájí protokol dvoufázového potvrzení. Správce transakcí nejprve požádá každého zařazeného správce prostředků, pokud je připraven k potvrzení transakce. Správce prostředků se musí připravit k potvrzení – připravuje se buď k potvrzení, nebo k přerušení transakce.
Během fáze přípravy správce trvalých prostředků zaznamenává stará a nová data ve stabilním úložišti, aby ho správce prostředků mohl obnovit i v případě selhání systému. Pokud se správce prostředků může připravit, informuje správce transakcí o svém hlasování o tom, zda se má transakce potvrdit nebo přerušit. Pokud některý správce prostředků hlásí selhání přípravy, správce transakcí odešle každému správci prostředků příkaz vrácení zpět a indikuje selhání potvrzení do aplikace.
Jakmile je správce prostředků připravený, musí počkat, až získá potvrzení nebo přerušení zpětného volání od správce transakcí ve fázi 2. Obvykle se celý protokol přípravy a potvrzení dokončí za zlomek sekundy. Pokud dojde k selhání systému nebo komunikace, oznámení o potvrzení nebo přerušení nemusí přijít po dobu minut nebo hodin. Během tohoto období správce prostředků pochybuje o výsledku transakce. Neví, zda byla transakce potvrzena nebo zrušena. I když správce prostředků pochybuje o transakci, uchovává data upravená tím, že transakce je uzamčena, čímž tyto změny izoluje od všech ostatních transakcí.
Pokud správce prostředků selže, všechny jeho zapsané transakce jsou přerušeny s výjimkou těch, které jsou připravené nebo potvrzené před selháním. Když se správce trvalých prostředků restartuje, rekonstruuje potvrzený stav prostředků, které spravuje, načtením informací zapsaných ve fázi přípravy. Na základě těchto informací pak tyto transakce buď potvrdí, nebo přeruší.
Stručně řečeno, dvoufázový potvrzovací protokol a správci prostředků činí transakce atomickými a trvalými.
Třída Transaction také poskytuje metodu EnlistPromotableSinglePhase pro registraci Promotable Single Phase Enlistment (PSPE). To umožňuje trvalému správci prostředků (RM) hostovat a "vlastnit" transakci, která může být později eskalována, aby byla v případě potřeby spravována nástrojem MSDTC. Další informace o tomto tématu naleznete v části Optimalizace pomocí jednofázového potvrzení a propagovatelného jednofázového oznámení.
V této sekci
Kroky, za kterými obvykle následuje správce prostředků, jsou popsané v následujících tématech.
Zařazení prostředků jako účastníků transakce
Popisuje, jak se trvalý nebo nestálý zdroj může zúčastnit transakce.
Potvrzení transakce v Single-Phase a vícefázové fázi
Popisuje, jak správce prostředků reaguje na oznámení o provedení a připraví provedení.
Popisuje, jak se trvalý správce prostředků obnoví z selhání.
Úrovně důvěryhodnosti zabezpečení při přístupu k prostředkům
Popisuje, jak tři úrovně důvěryhodnosti pro System.Transactions omezují přístup k typům prostředků, které System.Transactions zveřejňuje.
Optimalizace pomocí jednofázového potvrzení a oznámení o jedné fázi
Popisuje praktiky optimalizace dostupné implementacím správců prostředků.