Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Elke resource die in een transactie wordt gebruikt, wordt beheerd door een resourcemanager, waarvan de acties worden gecoördineerd door een transactiebeheerder. Resourcemanagers werken samen met de transactiemanager om de toepassing een garantie te bieden voor atomiciteit en isolatie. Microsoft SQL Server, duurzame berichtenwachtrijen, hashtabellen in het geheugen zijn allemaal voorbeelden van resourcemanagers.
Een Resource Manager beheert duurzame of vluchtige gegevens. De duurzaamheid (of omgekeerd de volatiliteit) van een resourcemanager verwijst naar of de resourcemanager foutenherstel ondersteunt. Als een resourcemanager herstel van fouten ondersteunt, worden er gegevens bewaard in duurzame opslag tijdens fase1 (voorbereiding), zodat als de resourcemanager uitvalt, de transactie opnieuw kan worden opgenomen bij herstel en de juiste acties kunnen worden uitgevoerd op basis van de meldingen die zijn ontvangen van de transactiebeheerder. Over het algemeen beheren vluchtige resourcebeheerders vluchtige resources, zoals een gegevensstructuur in het geheugen (bijvoorbeeld een transacted-hashtable in het geheugen), en duurzame resourcemanagers beheren resources die een persistenter back-uparchief hebben (bijvoorbeeld een database waarvan de back-upopslag een schijf is).
Om een resource aan een transactie te laten deelnemen, moet het in de transactie worden opgenomen. De Transaction klasse definieert een set methoden waarvan de namen beginnen met Enlist die deze functionaliteit bieden. De verschillende Enlist-methoden komen overeen met de verschillende typen aanmeldingen die een resourcemanager kan hebben. U gebruikt met name de EnlistVolatile methoden voor vluchtige resources en de EnlistDurable methode voor duurzame resources. Voor de eenvoud moet u, nadat u hebt besloten of u de EnlistDurable of EnlistVolatile methode wilt gebruiken op basis van de ondersteuning voor duurzaamheid van uw resource, uw resource inzetten om deel te nemen aan Two Phase Commit (2PC) door de IEnlistmentNotification interface voor uw resourcemanager te implementeren. Zie Een transactie doorvoeren in Single-Phase en meerdere fasen voor meer informatie over 2PC.
Door de resourcemanager in te schakelen, zorgt de resourcemanager ervoor dat er callbacks van de transactiebeheerder worden opgehaald wanneer de transactie wordt doorgevoerd of afgebroken. Er is één exemplaar van IEnlistmentNotification per inschrijving. Normaal gesproken is er één inschrijving per transactie, maar een resourcemanager kan ervoor kiezen om zich meerdere keren in dezelfde transactie in te schrijven.
Na het inschakelen reageert de resourcemanager op de aanvragen van de transactie. Een duurzame resourcemanager slaat voldoende informatie op zodat deze het werk van de transactie ongedaan kan maken of opnieuw kan uitvoeren op resources die door de beheerder worden beheerd. Er zijn veel manieren om dit te doen; het bijhouden van versies van gegevens of het bijhouden van een logboek van de wijzigingen zijn twee veelvoorkomende technieken.
Wanneer de toepassing de transactie doorvoert, initieert de transactiebeheerder het protocol voor doorvoeren in twee fasen. De transactiebeheerder vraagt eerst elke in de lijst vermelde resourcemanager als deze klaar is om de transactie door te voeren. De resourcemanager moet zich voorbereiden om te commiteren. Het maakt zich gereed om de transactie of door te voeren of af te breken.
Tijdens de voorbereidingsfase registreert de duurzame resourcemanager de oude en nieuwe gegevens in stabiele opslag, zodat de resourcemanager deze kan herstellen, zelfs als het systeem uitvalt. Als de resourcemanager klaar is, brengt deze de transactiebeheerder op de hoogte over zijn stem om de transactie door te voeren of af te breken. Als een resource manager meldt dat het niet kan voorbereiden, stuurt de transactiebeheerder een terugdraaiopdracht naar elke resource manager en geeft de fout bij de uitvoering door aan de applicatie.
Zodra de resourcemanager is voorbereid, moet deze wachten tot het in fase 2 een commit of abort callback ontvangt van de transactiebeheerder. Normaal gesproken wordt het hele protocol voor voorbereiden en doorvoeren voltooid in een fractie van een seconde. Als er systeem- of communicatiefouten zijn, kan de melding voor doorvoeren of afbreken mogelijk niet binnen komen voor minuten of uren. Gedurende deze periode twijfelt de resourcemanager over het resultaat van de transactie. Het weet niet of de transactie is doorgevoerd of afgebroken. Hoewel de resourcemanager twijfelt over een transactie, blijven de gegevens gewijzigd door de transactie vergrendeld te houden, waardoor deze wijzigingen van andere transacties worden geïsoleerd.
Wanneer een resourcemanager mislukt, worden alle in de lijst vermelde transacties afgebroken, met uitzondering van transacties die zijn voorbereid of vastgelegd vóór de fout. Wanneer een duurzame resource manager opnieuw wordt opgestart, reconstrueert het de vastgelegde status van de beheerde resources door de voorbereidingsinformatie die in de voorbereidingsfase is geschreven op te halen. Vervolgens worden deze transacties overeenkomstig bevestigd of afgebroken.
Kortom, het doorvoeren-in-twee-fasen-protocol en de resourcemanagers worden gecombineerd om transacties atoom en duurzaam te maken.
De Transaction klasse biedt ook de EnlistPromotableSinglePhase methode om een Promotable Single Phase Enlistment (PSPE) in te schakelen. Hierdoor kan een durable resource manager (RM) een transactie hosten en 'bezitten' die later kan worden geëscaleerd om indien nodig door de MSDTC te worden beheerd. Zie Optimalisatie met behulp van single phase Commit en Promotable Single Phase Notification voor één fase voor meer informatie hierover.
In deze sectie
De stappen die doorgaans worden gevolgd door een Resource Manager, worden beschreven in de volgende onderwerpen.
Resources inschakelen als deelnemers aan een transactie
Beschrijft hoe een duurzame of vluchtige resource kan worden opgenomen in een transactie.
Een transactie doorvoeren in Single-Phase en meerdere fasen
Hierin wordt beschreven hoe een Resource Manager reageert op doorvoermeldingen en de doorvoering voorbereidt.
Hierin wordt beschreven hoe een duurzame Resource Manager herstelt na een fout.
Beveiligingsvertrouwensniveaus bij toegang tot middelen
Hierin wordt beschreven hoe de drie vertrouwensniveaus voor System.Transactions de toegang tot de typen bronnen beperken die System.Transactions blootlegt.
Optimalisatie met single phase commit en promotable Single Phase Notification
Beschrijft optimalisatieprocedures die beschikbaar zijn voor implementaties van resourcemanagers.