Megosztás a következőn keresztül:


Resource Manager implementálása

A tranzakciókban használt összes erőforrást egy erőforrás-kezelő felügyeli, amelynek műveleteit egy tranzakciókezelő koordinálja. Az erőforrás-kezelők együttműködnek a tranzakciókezelővel, hogy garantálják az alkalmazás számára az atomitást és az elkülönítést. A Microsoft SQL Server, a tartós üzenetsorok és a memóriabeli kivonattáblák mind példaként szolgálnak az erőforrás-kezelőkre.

Az erőforrás-kezelők tartós vagy változékony adatokat kezelnek. Az erőforrás-kezelő tartóssága (vagy ezzel szemben a volatilitás) azt jelenti, hogy az erőforrás-kezelő támogatja-e a hibahelyreállítást. Ha egy erőforrás-kezelő támogatja a hibahelyreállítást, az 1. fázis (előkészítés) során megőrzi az adatokat a tartós tárolóban, így ha az erőforrás-kezelő leáll, a helyreállításkor újra bejelentkezhet a tranzakcióba, és végrehajthatja a megfelelő műveleteket a tranzakciókezelőtől kapott értesítések alapján. Az illékony erőforrás-kezelők általában olyan változékony erőforrásokat kezelnek, mint például a memórián belüli adatstruktúra (például egy memóriabeli transacted-hashtable), és a tartós erőforrás-kezelők olyan erőforrásokat kezelnek, amelyek állandóbb háttértárat (például egy olyan adatbázist kezelnek, amelynek a háttértárolója lemez).

Ahhoz, hogy egy erőforrás részt vegyen egy tranzakcióban, be kell jelentkeznie a tranzakcióba. Az Transaction osztály olyan metódusokat határoz meg, amelyek neve az Enlisttel kezdődik, amelyek ezt a funkciót biztosítják. A különböző Enlist metódusok megfelelnek az erőforrás-kezelők által esetleg használt különböző típusú beléptetési módoknak. Pontosabban a EnlistVolatile változó erőforrások és a tartós erőforrások metódusát EnlistDurable használja. Az egyszerűség kedvéért, miután eldöntette, hogy az EnlistDurable EnlistVolatile erőforrás tartóssági támogatásán alapuló módszert használ-e, az erőforrást a resource manager felületének implementálásával IEnlistmentNotification kell bevonnia a kétfázisú véglegesítésbe (2PC). További információ a 2PC-ről: Tranzakció véglegesítése egyfázisos és többfázisos fázisban.

A regisztrálással az erőforrás-kezelő biztosítja, hogy visszahívásokat kapjon a tranzakciókezelőtől a tranzakció véglegesítésekor vagy megszakításakor. A beléptetésnek egy példánya IEnlistmentNotification van. Tranzakciónként általában egy beléptetés van, de egy erőforrás-kezelő dönthet úgy, hogy többször is részt vesz ugyanabban a tranzakcióban.

A beléptetés után az erőforrás-kezelő válaszol a tranzakció kéréseire. A tartós erőforrás-kezelő elegendő információt tárol ahhoz, hogy visszavonja vagy újra elvégezhesse a tranzakció által kezelt erőforrásokon végzett munkát. Ennek számos módja van; Az adatok verzióinak megőrzése vagy a módosítások naplójának megőrzése két gyakori módszer.

Amikor az alkalmazás véglegesíti a tranzakciót, a tranzakciókezelő elindítja a kétfázisú véglegesítési protokollt. A tranzakciókezelő először megkérdezi az egyes bevont erőforrás-kezelőket, hogy készen áll-e a tranzakció véglegesítésére. Az erőforrás-kezelőnek fel kell készülnie a véglegesítésre – a tranzakció véglegesítésére vagy megszakítására is képes.

Az előkészítési fázisban a tartós erőforrás-kezelő stabil tárolóban rögzíti a régi és az új adatokat, hogy az erőforrás-kezelő akkor is helyreállíthassa azokat, ha a rendszer meghibásodik. Ha az erőforrás-kezelő elő tud készülni, tájékoztatja a tranzakciókezelőt a tranzakció véglegesítéséről vagy megszakításáról. Ha valamelyik erőforrás-kezelő sikertelen előkészítési hibát jelez, a tranzakciókezelő egy visszaállítási parancsot küld az egyes erőforrás-kezelőknek, és jelzi az alkalmazás véglegesítésének sikertelenségét.

Az előkészítés után az erőforrás-kezelőnek várnia kell, amíg véglegesítést vagy visszahívást nem kap a tranzakciókezelőtől a 2. fázisban. A teljes előkészítési és véglegesítési protokoll általában egy másodperc töredékében fejeződik be. Rendszer- vagy kommunikációs hibák esetén előfordulhat, hogy a véglegesítési vagy megszakítási értesítés percekig vagy órákig nem érkezik meg. Ebben az időszakban az erőforrás-kezelő kétségei vannak a tranzakció kimenetelével kapcsolatban. Nem tudja, hogy a tranzakció véglegesítve vagy megszakítva van-e. Bár az erőforrás-kezelő kétségei vannak egy tranzakcióval kapcsolatban, a tranzakció zárolt állapotban tartásával megőrzi az adatokat, és így elkülöníti ezeket a módosításokat minden más tranzakciótól.

Ha egy erőforrás-kezelő meghiúsul, a rendszer megszakítja az összes bevont tranzakciót, kivéve azokat, amelyeket a hiba előtt előkészítettek vagy véglegesítettek. Amikor egy tartós erőforrás-kezelő újraindul, rekonstruálja az általa kezelt erőforrások véglegesített állapotát az előkészítési fázisban írt előkészítési információk lekérésével, és ennek megfelelően véglegesíti vagy megszakítja ezeket a tranzakciókat.

Összefoglalva, a kétfázisú véglegesítési protokoll és az erőforrás-kezelők együttesen teszik atomi és tartóssá a tranzakciókat.

Az Transaction osztály a Promotable Single Phase Enlistment (PSPE) meghívásának módszerét is biztosítja EnlistPromotableSinglePhase . Ez lehetővé teszi, hogy a tartós erőforrás-kezelő (RM) üzemeltetjen és "birtokoljon" egy tranzakciót, amelyet később az MSDTC felügyelhet, ha szükséges. Erről további információt az egyfázisú véglegesítés és a promóciós egyfázisú értesítés használatával történő optimalizálás című témakörben talál.

A szakasz tartalma

Az erőforrás-kezelő által általában követett lépéseket az alábbi témakörök ismertetik.

Erőforrások felvétele tranzakció résztvevőiként

Azt ismerteti, hogy egy tartós vagy volatilis erőforrás hogyan vehet részt egy tranzakcióban.

Tranzakció véglegesítése egyfázisú és többfázisú

Ismerteti, hogyan válaszol egy erőforrás-kezelő a véglegesítési értesítésre, és hogyan készíti elő a véglegesítést.

Helyreállítás végrehajtása

Ismerteti, hogyan állítható helyre a tartós erőforrás-kezelő a hibákból.

Az erőforrások elérésének biztonsági megbízhatósági szintjei

Ismerteti, hogy a System.Transactions három megbízhatósági szintje hogyan korlátozza a hozzáférést a közzétett System.Transactions erőforrások típusaihoz.

Optimalizálás egyfázisú véglegesítéssel és promóciós egyfázisú értesítéssel

Az erőforrás-kezelők implementációi számára elérhető optimalizálási eljárásokat ismerteti.