Grunderna för transaktioner
Transaktioner binder samman flera uppgifter. Anta till exempel att ett program utför två uppgifter. Först skapar den en ny tabell i en databas. Därefter anropas ett specialiserat objekt för att samla in, formatera och infoga data i den nya tabellen. Dessa två uppgifter är relaterade och till och med beroende, så att du vill undvika att skapa en ny tabell om du inte kan fylla den med data. Om båda aktiviteterna körs inom omfånget för en enda transaktion framtvingas anslutningen mellan dem. Om den andra aktiviteten misslyckas återställs den första aktiviteten till en punkt innan den nya tabellen skapades.
För att säkerställa förutsägbart beteende måste alla transaktioner ha de grundläggande ACID-egenskaperna (atomiska, konsekventa, isolerade och hållbara). Dessa egenskaper förstärker rollen för verksamhetskritiska transaktioner som alla-eller-inga-förslag. Mer information om ACID finns i ACID-egenskaper. Sammanfattningsvis garanterar ACID att en uppsättning relaterade uppgifter antingen lyckas eller misslyckas som en enhet. I terminologin för transaktionsbearbetning genomför eller avbryter transaktionen. För att en transaktion ska kunna genomföras måste alla deltagare garantera att alla ändringar av data blir permanenta. Ändringarna måste bevaras trots systemkrascher eller andra oförutsedda händelser. Om en enskild deltagare inte kan garantera detta misslyckas hela transaktionen. Alla ändringar av data inom transaktionens omfång återställs till en specifik angiven punkt.
En transaktion kan begränsas till en enskild dataresurs, till exempel en databas eller meddelandekö. I det här scenariot hanteras den lokala transaktionen av Transaction Manager som tillhandahålls av System.Transactions , vilket genererar prestandavinst. Dessa transaktioner styrs av dataresursen och är effektiva och enkla att hantera.
Transaktioner kan också omfatta flera dataresurser. Distribuerade transaktioner ger dig möjlighet att införliva flera distinkta åtgärder som inträffar på olika system i en enda åtgärd för passering eller fel. I det här scenariot samordnas transaktionerna av Microsoft Distributed Transaction Coordinator (MSDTC) som finns i varje system.
När du utvecklar ett transaktionsprogram med hjälp av de klasser som tillhandahålls av System.Transactionsbehöver du inte bekymra dig om vilken typ av transaktioner du behöver, eller vilken transaktionshanterare som är inblandad. Infrastrukturen System.Transactions hanterar dessa automatiskt åt dig.
När du skapar en transaktion kan du ange den isoleringsnivå som gäller för transaktionen. Isoleringsnivån, som definieras av IsolationLevel uppräkningen, avgör vilken åtkomstnivå andra transaktioner kommer att ha till de data som påverkas av din transaktion.
Du kan skapa transaktioner med hjälp av ADO.NET, System.EnterpriseServiceseller transaktionsprogrammeringsmodellen som tillhandahålls av System.Transactions namnområdet. I avsnittet Funktioner som tillhandahålls av System.Transactions beskrivs de funktioner som du kan använda för att skriva ett transaktionsprogram med hjälp av System.Transactions namnområdet.