Delen via


Functies van System.Transactions

In deze sectie wordt beschreven hoe u de functies van de System.Transactions naamruimte kunt gebruiken om uw eigen transactionele toepassing en Resource Manager te schrijven. In deze sectie wordt beschreven hoe u een transactie maakt en hieraan deelneemt (lokaal of gedistribueerd) met een of meer deelnemers.

Overzicht van System.Transactions

De infrastructuur van de klassen in de System.Transactions naamruimte maakt transactionele programmering eenvoudig en efficiënt door ondersteunende transacties die zijn geïnitieerd in SQL Server, ADO.NET, Message Queuing (MSMQ) en de Microsoft Distributed Transaction Coordinator (MSDTC). De System.Transactions naamruimte biedt zowel een expliciet programmeermodel op basis van de Transaction klasse als een impliciet programmeermodel met behulp van de TransactionScope klasse, waarin transacties automatisch worden beheerd door de infrastructuur. Zie Een transactionele toepassing schrijven voor meer informatie over het maken van een transactionele toepassing met behulp van deze twee modellen.

De System.Transactions naamruimte biedt ook typen waarmee u een Resource Manager kunt implementeren. Een resourcemanager beheert duurzame of vluchtige gegevens die worden gebruikt in een transactie en werkt samen met de transactiebeheerder om de toepassing een garantie te bieden voor atomiciteit en isolatie. De transactiebeheerder die wordt geleverd door de System.Transactions infrastructuur ondersteunt transacties met meerdere vluchtige resources of één duurzame resource. Zie Een Resource Manager implementeren voor meer informatie over het implementeren van een Resource Manager.

De transactiebeheerder escaleert ook transparant lokale transacties naar gedistribueerde transacties door te coördineren met een schijfgebaseerde transactiebeheerder, zoals de DTC, wanneer een extra duurzame Resource Manager zichzelf inschrijft met een transactie. Er zijn twee belangrijke manieren waarop de System.Transactions infrastructuur verbeterde prestaties biedt.

  • Dynamische escalatie, die ervoor zorgt dat de System.Transactions infrastructuur alleen de MSDTC gebruikt wanneer een transactie meerdere gedistribueerde resources omvat. Voor meer informatie over dynamische escalatie. zie het onderwerp Escalatie van transactiebeheer.

  • Promotable Enlistments, waarmee een resource, zoals een database, eigenaar kan worden van de transactie als het de enige entiteit is die deelneemt aan de transactie. Later, indien nodig, kan de System.Transactions infrastructuur het beheer van de transactie nog steeds escaleren naar de MSDTC. Dit vermindert de kans op het gebruik van de MSDTC verder. Promotable Enlistments worden uitgebreid behandeld in het onderwerpOptimalisatie met behulp van single phase commit en Promotable Single Phase Notification.

De System.Transactions naamruimte definieert drie vertrouwensniveaus: AllowPartiallyTrustedCallers (APTCA), DistributedTransactionPermission (DTP) en volledige vertrouwensrelatie, waarmee de toegang wordt beperkt tot de typen resources die worden weergegeven. Zie Beveiligingsvertrouwensniveaus voor toegang tot resources voor meer informatie over de verschillende vertrouwensniveaus.

In deze sectie

Een transactionele toepassing schrijven

De System.Transactions naamruimte biedt twee modellen voor het maken van transactionele toepassingen. Het implementeren van een impliciete transactie met behulp van transactiebereik beschrijft hoe de System.Transactions naamruimte het maken van impliciete transacties ondersteunt met behulp van de TransactionScope klasse.

Het implementeren van een expliciete transactie met behulp van CommittableTransaction beschrijft hoe de System.Transactions naamruimte het maken van expliciete transacties met behulp van de CommittableTransaction klasse ondersteunt.

Zie Een transactionele toepassing schrijven voor aanvullende onderwerpen over het schrijven van een transactionele toepassing.

Een Resource Manager implementeren

Zie Een Resource Manager implementeren om een resourcemanager te implementeren die kan deelnemen aan een transactie. Deze sectie bevat informatie over de opname van een resource, het doorvoeren van een transactie, het herstel na een fout en de aanbevolen procedures voor optimalisatie.