Grondbeginselen van transacties
Transacties binden meerdere taken aan elkaar. Stel dat een toepassing twee taken uitvoert. Eerst wordt er een nieuwe tabel in een database gemaakt. Vervolgens wordt een speciaal object aangeroepen voor het verzamelen, opmaken en invoegen van gegevens in de nieuwe tabel. Deze twee taken zijn gerelateerd en zelfs afhankelijk van elkaar, zodat u wilt voorkomen dat u een nieuwe tabel maakt, tenzij u deze met gegevens kunt invullen. Door beide taken binnen het bereik van één transactie uit te voeren, wordt de verbinding tussen deze taken afgedwongen. Als de tweede taak mislukt, wordt de eerste taak teruggedraaid naar een punt voordat de nieuwe tabel is gemaakt.
Om voorspelbaar gedrag te garanderen, moeten alle transacties beschikken over de basis-ACID-eigenschappen (atomisch, consistent, geïsoleerd en duurzaam). Deze eigenschappen versterken de rol van bedrijfskritieke transacties als alles-of-geen-proposities. Zie ACID-eigenschappen voor meer informatie over ACID. Samenvattend garandeert ACID dat een reeks gerelateerde taken slaagt of mislukt als een eenheid. In de terminologie voor transactieverwerking wordt de transactie doorgevoerd of afgebroken. Voor een transactie die moet worden doorgevoerd, moeten alle deelnemers garanderen dat wijzigingen in gegevens permanent zijn. Wijzigingen moeten blijven bestaan ondanks systeemcrashes of andere onvoorziene gebeurtenissen. Als zelfs één deelnemer deze garantie niet kan garanderen, mislukt de hele transactie. Alle wijzigingen in gegevens binnen het bereik van de transactie worden teruggedraaid naar een specifiek setpunt.
Een transactie kan worden beperkt tot één gegevensresource, zoals een database of berichtenwachtrij. In dit scenario wordt de lokale transactie beheerd door transaction manager die wordt geleverd door System.Transactions , waardoor prestatiewinst wordt gegenereerd. Deze transacties worden beheerd door de gegevensresource en zijn efficiënt en eenvoudig te beheren.
Transacties kunnen ook meerdere gegevensbronnen omvatten. Gedistribueerde transacties bieden u de mogelijkheid om verschillende afzonderlijke bewerkingen op verschillende systemen op te nemen in één pass- of failactie. In dit scenario worden de transacties gecoördineerd door de Microsoft Distributed Transaction Coordinator (MSDTC) die zich in elk systeem bevindt.
Wanneer u een transactionele toepassing ontwikkelt met behulp van de klassen die worden geleverd door System.Transactions, hoeft u zich geen zorgen te maken over het soort transacties dat u nodig hebt of de betrokken transactiebeheerder. De System.Transactions infrastructuur beheert deze automatisch voor u.
Wanneer u een transactie maakt, kunt u het isolatieniveau opgeven dat van toepassing is op de transactie. Het isolatieniveau, gedefinieerd door de IsolationLevel enum, bepaalt welk toegangsniveau andere transacties moeten hebben voor de gegevens die worden beïnvloed door uw transactie.
U kunt transacties maken met behulp van ADO.NET of System.EnterpriseServiceshet transactionele programmeermodel dat wordt geleverd door de System.Transactions naamruimte. In het onderwerp Functies van System.Transactions worden de functies besproken die u kunt gebruiken om een transactionele toepassing te schrijven met behulp van de System.Transactions naamruimte.