Tranzakciós ügyfél létrehozása

A tranzakciós ügyfél egy tranzakciófeldolgozó rendszer (TPS) összetevő, amely egy erőforrás-kezelő exportált felületét használja az erőforrás-kezelő által támogatott erőforrások( például egy adatbázis) eléréséhez.

Az ügyfél általában létrehoz egy tranzakciót, végrehajt egy adatbázis-műveletet, majd véglegesíti a tranzakciót, hogy a műveletek véglegesítve legyenek. Ha az ügyfél hibát tapasztal, visszaállíthatja a tranzakciót, hogy a tranzakció véglegesítése helyett eltávolítsa a tranzakció műveleteit.

A kernel módú KTM-et használó tranzakciós ügyfélnek általában az alábbi feladatokat kell elvégeznie minden tranzakcióhoz:

  1. Hozzon létre egy tranzakcióobjektumot.

    A ZwCreateTransaction hívása létrehoz egy tranzakcióobjektumot, egy objektumleírót biztosít, és hozzárendel egy objektumazonosítót (GUID-t), amelyet az ügyfél átadhat az erőforrás-kezelőnek a tranzakció azonosításához.

  2. Szerezze be a tranzakcióobjektum azonosítóját.

    Az ügyfél meghívhatja a ZwQueryInformationTransaction parancsot az objektumazonosító lekéréséhez.

  3. Adja át a tranzakcióobjektum azonosítóját egy erőforrás-kezelőnek.

    Az ügyfél általában meghívja az erőforrás-kezelő exportált felületét, hogy nyisson meg egy kommunikációs útvonalat az erőforrás-kezelőhöz, és társítsa az elérési utat a tranzakcióhoz. Előfordulhat például, hogy az erőforrás-kezelő olyan CreateDataObject rutint biztosít, amely hasonló a TPS-összetevők ismertetése témakör által leírthoz.

  4. Hajtsa végre a tranzakcióban belefoglalandó műveleteket.

    Az ügyfél általában meghívja az erőforrás-kezelő felületét az erőforrás-kezelő erőforrásának eléréséhez. Előfordulhat például, hogy egy adatbázis-kezelő ügyfele olvas és ír az adatbázisba.

  5. Véglegesítse vagy visszaállítsa a tranzakciót.

    Ha az összes erőforrásművelet sikeres, az ügyfélnek meg kell hívnia a ZwCommitTransactiont a műveletek véglegesítéséhez. Ha egy művelet meghiúsul, az ügyfélnek A ZwCommitTransaction helyett a ZwRollbackTransaction parancsot kell meghívnia. Ha például egy adatbázis-kezelő ügyfele megállapítja, hogy az írási műveletek egyike sikertelen volt, az ügyfélnek meg kell hívnia a ZwRollbackTransaction parancsot , hogy egyik írási művelet se legyen állandó.

    Az ügyfelek szinkronizálva vagy aszinkron módon hívhatják meg a ZwCommitTransaction és a ZwRollbackTransaction parancsot. Ha az ügyfelek szinkron módon hívják meg ezeket a rutinokat, a rutinok csak a véglegesítési vagy visszaállítási művelet befejeződéséig térnek vissza.

    A tranzakciók véglegesítésével és visszaállításával kapcsolatos további információkért lásd: Tranzakcióműveletek kezelése.

  6. Zárja be a tranzakció-objektum leíróját.

    Miután az ügyfél befejezte a tranzakció feldolgozását, meg kell hívnia a ZwClose-t a tranzakcióobjektum leírójának bezárásához

A TPS több erőforrás-kezelőt is tartalmazhat. Ha egy ügyfél tranzakciója több erőforráson , például két olyan adatbázison végzett műveleteket tartalmaz, amelyeket két erőforrás-kezelő támogat, az ügyfél általában a következőket hajtja végre:

  1. Minden tranzakcióhoz egyetlen tranzakcióobjektumot hoz létre.

  2. Átadja a tranzakcióobjektum azonosítóját az egyes erőforrás-kezelőknek.

  3. Műveleteket hajt végre az egyes adatbázisokon az egyes erőforrás-kezelők felületének meghívásával.

  4. Véglegesíti a tranzakciót, ha az összes művelet hiba nélkül befejeződött, vagy ha hiba történt, visszaállítja a tranzakciót.

Ha a TPS egy kiváló tranzakciókezelőt tartalmaz, a tranzakciós ügyfelek általában nem hívják meg a KTM-et. A kiváló tranzakciókezelőkről és ügyfeleikről további információt a Kiváló tranzakciókezelő létrehozása című témakörben talál.

A tranzakciós ügyfelek meghívhatják a ZwSetInformationTransactiont a tranzakcióspecifikus információk megadásához. Az ügyfél például beállíthat egy időtúllépési értéket a tranzakcióhoz, vagy megadhat egy leíró karaktersztringet. Az ügyfelek meghívhatják a ZwQueryInformationTransactiont a tranzakcióval kapcsolatos információk lekéréséhez. Egy ügyfél például meghívhatja ezt a rutint annak megállapításához, hogy egy tranzakció véglegesítése vagy visszaállítása megtörtént-e.