Om iemands gids te citeren: In daadwerkelijke ontwikkeling voer je een gebeurtenis uit en roep je vervolgens een andere interface aan om data in te voegen; als er een uitzondering is in de verwerkingslogica, worden de eerder ingevoegde data rommeldata, Wat we willen is de hele methode als een transactie kunnen definiëren, en de TransactionScope-klasse biedt een eenvoudige methode waarmee je niet met de transactie zelf hoeft te interageren. om een codeblok te markeren als deelnemend aan een transactie. Het TransactionScope-object maakt een transactie aan en zet deze op de eigenschap Current van de Transaction-klasse.
1. Voordelen van TransactionScope 1. Het is handiger in gebruik. TransactionScope kan impliciete transacties implementeren, zodat je code op de data-toegangslaag kunt schrijven zonder rekening te houden met transacties, maar transacties op de bedrijfslaag kunt controleren. 2. Gedistribueerde transacties kunnen worden geïmplementeerd, zoals cross-database of MSMQ.
2. Nadelen van TransactionScope 1. De kostenprestaties zijn niet hoog. Bijvoorbeeld, je controleert alleen de transacties van een bibliotheek in "Scope". Het gebruik van "TransactionScope" is een beetje verspilling. 2. Onder normale omstandigheden, zolang je "TransactionScope" gebruikt, moet je MSDTC configureren, een firewall installeren en poort 139 openen. Deze poort kan niet worden gewijzigd
3. Als je gedistribueerde transacties moet gebruiken, moet je er goed over nadenken 1. Moet deze operatie in de transactie zitten? Als deze stap niet wordt voltooid of faalt, is het dan de moeite waard om de hele transactie terug te draaien? Is er geen elegante compensatie- of fouttolerantiemaatregelen? 2. Hoeveel punten bevatten gedistribueerde transacties? Moet er een grote reeks realtime operaties zijn? Kun je sommige punten niet stroomlijnen via meldingsoperaties? 3. Na het starten van een gedistribueerde transactie, voerde je transactie-agnostische operaties uit, ook al waren deze behandelingen niet transactioneel? (bijvoorbeeld gegevens lezen, berekenen, wachten tot de gebruiker een bericht teruggeeft, wachten op het terugkomen van andere modules, enzovoort.) 4. Je hebt toch geen leesoperaties meegeteld in de transactie? Dit is een makkelijke fout wanneer je een select-operatie in de transactie inschakelt. 5. Sommige stappen van je operatie kunnen worden uitgevoerd nadat alle operaties zijn afgerond. Dit type operatie heeft duidelijke notificatiekenmerken. Meldingsoperaties zeggen: ik geef je een melding, en ik garandeer dat de melding je zal bereiken; Je moet deze kennisgeving opnemen en ervoor zorgen dat deze wordt verwerkt, maar je hoeft er niet meteen mee om te gaan zodra ik je informeer. Deze bewerking kan uiteraard met een andere taak worden uitgevoerd.
4. Let op de volgende punten bij het gebruik van gedistribueerde transacties 1: Zorg ervoor dat de machine die aan de transactie deelneemt gedistribueerde transactieondersteuning heeft ingeschakeld. 2: Als de firewall op de machine staat, moet je het msdtc-proces als uitzondering instellen. 3: De machine die aan de transactie deelneemt kan het domein niet overschrijden (als het cross-domain is, heeft Microsoft momenteel geen exacte oplossing); 4: Gebruik gedistribueerde transacties alleen als je meerdere databases hebt; als het dezelfde database is, is het het beste om SqlTransaction te gebruiken. 1. Voeg eerst de referentie van System.Transactions toe (je moet de Net-assembly toevoegen)
De code op de C#-roep is als volgt:
Het adres van de blogs dat deze gedistribueerde transactieklasse uitlegt, is heel duidelijk:http://www.cnblogs.com/artech/archive/2010/01/31/1660356.html
2. Stel de configuratie van de webserver en SQL-server omgeving in
Control Panel - > Systemen & Beveiliging - > Beheertools - > Componentservices (Dit is vereist voor zowel WEB- als SQL-servers)
Bedieningspaneel - > Systemen & Beveiliging - > Beheertools - > Diensten
(Dit is vereist voor zowel WEB- als SQL-servers)
Configuratiescherm - > Systeem & Beveiliging - > Windows Firewall
(Dit is vereist voor zowel WEB- als SQL-servers)
3. MSSQL-configuratie
Voor serververbindingen, muisklik met de rechtermuisknop - > eigenschappen
4. Hosts configureren (alleen de WEB-server configureren, zo niet, configureer deze dan ook op de SQL-server)
C:\Windows\System32\drivers\etc hosts-bestand, dat wordt geopend met Notepad (SQL-serverinformatie moet worden geconfigureerd in het Hosts-bestand op de WEB-server) (Als de test faalt, configureer dan de informatie van de webserver in het Hosts-bestand op de SQL-server)
|