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


Tranzakciók konfigurálása

A tranzakcióattribútum egy deklaratív tulajdonság, amely automatikusan kezeli az összetevő fejlesztőjének tranzakcióit. Az attribútum beállításával szükségtelenné teszi explicit tranzakcióvezérlők használatát az összetevőben.

A COM+ az összetevő tranzakcióattribútumával határozza meg az egyes aktivált objektumokhoz szükséges tranzakcióvédelem típusát. A követelménytől függően az objektumok megoszthatják a hívó tranzakcióját, új tranzakciót igényelhetnek, vagy tranzakcióvédelem nélkül működhetnek.

A COM+ a következő tranzakcióattribútum-értékeket biztosítja:

letiltva

Ezt az attribútumértéket általában csak akkor érdemes beállítani, ha biztos benne, hogy az összetevő soha nem fér hozzá erőforrás-kezelőhöz. A tranzakcióattribútum letiltásakor a COM+ figyelmen kívül hagyja az összetevő tranzakciós követelményeit az objektum környezetelhelyezésének meghatározásakor. Ennek eredményeképpen az objektum megoszthatja a hívó környezetét (és tranzakcióját). COM-összetevő COM+-ba való migrálásakor le kell tiltania a tranzakció attribútumát, hogy a nem konfigurált COM-összetevővel megegyező tranzakciós viselkedést tartson fenn.

Jegyzet

A nem konfigurált összetevők olyan COM-összetevő, amely nincs telepítve COM+ alkalmazásban.

nem támogatott

Az attribútumérték beállításakor a COM+ biztosítja, hogy az összetevőből létrehozott objektumok soha ne vegyenek részt tranzakcióban, függetlenül a hívó tranzakciós állapotától. Ennek az értéknek a deklarálásával biztosíthatja, hogy egy objektum ne szavazzon a hívó tranzakciójára, és ne kezdjen saját tranzakciót. A nem támogatott az összes összetevő alapértelmezett értéke.

támogatott

Az attribútumérték beállításakor a COM+ biztosítja, hogy az összetevőből létrehozott objektumok részt vegyenek egy tranzakcióban, ha van ilyen. Ezt az értéket akkor deklarálhatja, ha azt szeretné, hogy egy objektum saját tranzakció megkövetelése nélkül osztozzon a hívó tranzakciójában.

Kötelező

Az attribútumérték beállításakor a COM+ biztosítja, hogy az összetevőből létrehozott objektumok tranzakciósak. Amikor a COM+ aktivál egy objektumot a Kötelező beállítással, megvizsgálja a hívó tranzakciós állapotát. Ha a hívó rendelkezik tranzakcióval, az új objektum szerepel az aktuális tranzakcióban. Ellenkező esetben a COM+ elindít egy tranzakciót, így az új objektum lesz a tranzakció gyökere. Ez az erőforrás-tevékenységeket végző összetevők előnyben részesített beállítása, mivel ez segít a tranzakciók védelmében.

újat igényel

Az attribútumérték beállításakor a COM+ biztosítja, hogy az összetevőből létrehozott objektumoknak a hívó tranzakciós állapotától függetlenül részt kell vennie egy új tranzakcióban a tranzakció gyökereként. A COM+ automatikusan elindít egy új tranzakciót, amely eltér a hívó tranzakciójától.

Jegyzet

A COM+ nem támogatja a beágyazott tranzakciókat. Amikor egy tranzakciós objektum meghív egy újként megjelölt másik összetevőt, a COM+ létrehoz egy független tranzakciós határt az újonnan aktivált objektumhoz. A második tranzakció csak akkor befolyásolhatja az első tranzakciót, ha az első tranzakció kifejezetten megjegyzi a második tranzakció eredményeit, és módosítja a szavazatát ezen eredmények alapján.

Tranzakcióattribútum-függőségek

Az alábbi táblázat az egyes COM+ tranzakcióattribútum-értékek jellemzőit mutatja be, beleértve az érték tranzakciós jellemzőkre gyakorolt hatását is. A COM+ kényszeríti a JIT aktiválást és a szinkronizálást az összes tranzakciós összetevőre.

Attribútum értéke Új tranzakció Ügyfél tranzakciója Tranzakciógyökér JIT-aktiválás Szinkronizálás
Fogyatékos
Soha
Talán
Soha
Szabadon választható
Szabadon választható
Nem támogatott
Soha
Soha
Soha
Szabadon választható
Szabadon választható
Támogatott
Soha
Ha az ügyfél tranzakcióval rendelkezik
Soha
Szükséges
Szükséges
Szükséges
Talán
Ha az ügyfél tranzakcióval rendelkezik
Ha az ügyfél nem rendelkezik tranzakcióval
Szükséges
Szükséges
Újat igényel
Mindig
Soha
Mindig
Szükséges
Szükséges

Tranzakcióhatárok

A tranzakcióknak van kezdete, vége, és pontosan egyszer fordulnak elő. A végrehajtás során egy tranzakció meghívhat egy erőforrást, például egy adatbázist vagy egy üzenetsort egy vagy több feladat végrehajtásához. Minden erőforrás a tranzakcióhatárán belül található. A tranzakcióhatáron belüli összes erőforrás, amely több folyamat- és számítógéphatárra is kiterjedhet, egyetlen tranzakcióval rendelkezik. Fontos a konzisztenciának a folyamat és a számítógép határai közötti kezelése.

A COM+ biztosítja a konzisztenciát azáltal, hogy automatikusan kezeli a tranzakcióhatárokat az egyes összetevőkhöz beállított tranzakcióattribútum értéke alapján. A COM+ tranzakció automatikusan áramlik azokhoz az objektumokhoz, amelyeket a tranzakcióban való részvételre utasítottak, és megkerüli azokat az objektumokat, amelyeket a tranzakción kívüli végrehajtásra utasítottak. A COM+ nem támogatja a beágyazott tranzakciókat. Ehelyett a COM+ tranzakciók különállóak és rövid élettartamúak.

A tranzakcióhatár első objektuma a tranzakcióra különleges, és a tranzakció főobjektumának nevezik. A tranzakcióban csak egy gyökérobjektum lehet. A gyökérobjektum alatti tranzakciós hierarchia összes többi objektumát belső objektumnak nevezzük.

Leképezési tranzakciók

Az egyik módja annak, hogy egy objektum szerepeljen a megfelelő tranzakciós határok között, ha megtervezi a tranzakciókat, mielőtt elkezdené írni az összetevőket. A tranzakciók leképezésével meghatározhatja a legjobb beállítást az egyes írott összetevőkhöz. Minél biztosabb az összetevők használatáról, annál könnyebb kiválasztani a megfelelő tranzakcióattribútum-értéket.

Futtatáskor a COM+ megvizsgálja a tranzakció attribútumát annak megállapításához, hogy egy objektum legyen-e egy új tranzakció gyökere, egy meglévő tranzakcióban kell-e létrehozni, vagy nem tranzakciós objektumként kell-e létrehozni.

Az alábbi ábrán egy lehetséges tranzakcióleképezés látható. Az ábrán az ügyfél létrehozza az 1. objektumot, amelyhez tranzakció szükséges. Mivel nincs tranzakció, a COM+ létrehozza az 1. tranzakciót, és az 1. objektumot gyökérobjektumként helyezi el benne. Az 1. objektum létrehozza a 2. objektumot, amely támogatja a tranzakciókat, ezért az 1. tranzakcióba kerül. A 2. objektum létrehozza a 3. objektumot, amely nem támogatja a tranzakciókat, ezért minden tranzakción kívül kerül. A 2. objektum létrehozza a 4. objektumot is, amely tranzakciót igényel, ezért az 1. tranzakcióban lesz elhelyezve. A 3. objektum létrehozza az 5. objektumot, amely támogatja a tranzakciókat. Mivel azonban az 5. objektumot olyan objektum hozza létre, amely nem létezik egy tranzakción belül, az is az összes tranzakción kívülre kerül. A 4. objektum létrehozza a 6. objektumot, amely új tranzakciót igényel, ezért a COM+ létrehozza a 2. tranzakciót, és a 6. objektumot gyökérobjektumként helyezi el benne. A 6. objektum létrehozza a 7. objektumot, amely támogatja a tranzakciókat, ezért a 2. tranzakcióba kerül.

diagram, amely az 1. tranzakcióval és a 2. tranzakcióval folytatott ügyfél-interakciót mutatja be.

Az előző ábrán két lehetséges problématerület látható. Először is a munka nagy része két különböző tranzakció között oszlik meg. Ha az 1. tranzakció meghiúsul, miután a 4. objektum létrehozta a 6. objektumot, a 2. tranzakciót az 1. tranzakció eredménye nem befolyásolja. Ha ez az eredmény nem szándékos, akkor érdemes lehet mindkét tranzakció műveleteit egyetlen tranzakcióba hajtani, amelyet a 6. objektum tranzakcióattribútumának Kötelezőre történő módosításával érhet el.

A leképezési ábrán az is látható, hogy a 3. és az 5. objektum nem tranzakciós jellegű, és az 1. és a 2. tranzakció hatókörén kívül fut. Ha az 5. objektum frissíti az állandó adatokat, érdemes lehet újragondolni annak nem tranzakciós állapotát. Az 5. objektum egy tranzakción belül helyezhető el, ha a tranzakció attribútumát Kötelezőre módosítja.

Tranzakcióattribútum beállítása