Funktioner som tillhandahålls av System.Transactions
I det här avsnittet beskrivs hur du kan använda de funktioner som tillhandahålls av System.Transactions namnområdet för att skriva ett eget transaktionsprogram och en resurshanterare. Mer specifikt beskriver det här avsnittet hur du skapar och deltar i en transaktion (lokal eller distribuerad) med en eller flera deltagare.
Översikt över System.Transactions
Infrastrukturen som tillhandahålls av klasserna i System.Transactions namnområdet gör transaktionell programmering enkel och effektiv genom att stödja transaktioner som initieras i SQL Server, ADO.NET, Message Queuing (MSMQ) och Microsoft Distributed Transaction Coordinator (MSDTC). Namnområdet System.Transactions innehåller både en explicit programmeringsmodell baserad på Transaction klassen, samt en implicit programmeringsmodell med hjälp av TransactionScope klassen, där transaktioner hanteras automatiskt av infrastrukturen. Mer information om hur du skapar ett transaktionsprogram med dessa två modeller finns i Skriva ett transaktionsprogram.
Namnområdet System.Transactions innehåller också typer som du kan använda för att implementera en resurshanterare. En resurshanterare hanterar varaktiga eller flyktiga data som används i en transaktion och arbetar i samarbete med transaktionshanteraren för att ge programmet en garanti för atomitet och isolering. Transaktionshanteraren som tillhandahålls av System.Transactions infrastrukturen stöder transaktioner som involverar flera flyktiga resurser eller en enda beständig resurs. Mer information om hur du implementerar en resurshanterare finns i Implementera en Resource Manager.
Transaktionshanteraren eskalerar också transparent lokala transaktioner till distribuerade transaktioner genom att samordna med en diskbaserad transaktionshanterare som DTC, när en ytterligare beständig resurshanterare registrerar sig med en transaktion. Det finns två viktiga sätt som System.Transactions infrastrukturen ger bättre prestanda på.
Dynamisk eskalering, vilket säkerställer att System.Transactions infrastrukturen endast engagerar MSDTC när en transaktion sträcker sig över flera distribuerade resurser. Mer information om dynamisk eskalering. se Eskalering av transaktionshantering.
Promotable Enlistments, som gör det möjligt för en resurs, till exempel en databas, att ta ägarskapet för transaktionen om det är den enda entitet som deltar i transaktionen. Senare, om det behövs, System.Transactions kan infrastrukturen fortfarande eskalera hanteringen av transaktionen till MSDTC. Detta minskar ytterligare risken för att använda MSDTC. Promotable Enlistments beskrivs på djupet i ämnetOptimering med hjälp av enfasincheckning och Promotable Enkel fas-meddelande.
Namnområdet System.Transactions definierar tre förtroendenivåer – AllowPartiallyTrustedCallers (APTCA), DistributedTransactionPermission (DTP) och fullständigt förtroende – som begränsar åtkomsten till de typer av resurser som den exponerar. Mer information om de olika förtroendenivåerna finns i Säkerhetsförtroendenivåer för åtkomst till resurser.
I detta avsnitt
Skriva ett transaktionsprogram
Namnområdet System.Transactions innehåller två modeller för att skapa transaktionsprogram. Implementeringen av en implicit transaktion med transaktionsomfånget beskriver hur System.Transactions namnområdet stöder skapandet av implicita transaktioner med hjälp av TransactionScope klassen.
Implementeringen av en explicit transaktion med CommittableTransaction beskriver hur System.Transactions namnområdet stöder skapande av explicita transaktioner med hjälp av CommittableTransaction klassen.
Mer information om hur du skriver ett transaktionsprogram finns i Skriva ett transaktionsprogram.
Implementera en Resource Manager
Information om hur du implementerar en resurshanterare som kan delta i en transaktion finns i Implementera en Resource Manager. Det här avsnittet beskriver hur du registrerar en resurs, genomför en transaktion, återställning efter fel och metodtips för optimering.