Um einen anderen Leitfaden zu zitieren: In der eigentlichen Entwicklungsarbeit wird ein Ereignis ausgeführt und dann eine weitere Schnittstelle aufgerufen, um Daten einzufügen; wenn es eine Ausnahme in der Verarbeitungslogik gibt, werden die zuvor eingefügten Daten zu Junk-Daten, Was wir wollen, ist, die gesamte Methode als Transaktion definieren zu können, und die TransactionScope-Klasse bietet eine einfache Methode, die es ermöglicht, nicht mit der Transaktion selbst interagieren zu müssen. einen Codeblock als Teil einer Transaktion zu markieren. Das TransactionScope-Objekt erstellt eine Transaktion und setzt die Transaktion auf die Current-Eigenschaft der Transaktionsklasse.
1. Vorteile von TransactionScope 1. Es ist bequemer zu bedienen. TransactionScope kann implizite Transaktionen implementieren, sodass Sie Code auf der Datenzugriffsschicht schreiben können, ohne Transaktionen zu berücksichtigen, aber die Transaktionen auf der Geschäftsebene steuern können. 2. Verteilte Transaktionen können implementiert werden, wie z. B. Datenbankübergreifend oder MSMQ.
2. Nachteile von TransactionScope 1. Die Kostenperformance ist nicht hoch. Zum Beispiel kontrollierst du nur die Transaktionen einer Bibliothek in "Scope". Die Nutzung von "TransactionScope" ist etwas verschwenderisch. 2. Unter normalen Umständen musst du, solange du "TransactionScope" verwendest, MSDTC konfigurieren, eine Firewall installieren und Port 139 öffnen. Dieser Port kann nicht geändert werden
3. Wenn Sie verteilte Transaktionen verwenden müssen, müssen Sie darüber nachdenken 1. Muss diese Operation in der Transaktion sein? Wenn dieser Schritt nicht abgeschlossen wird oder fehlschlägt, lohnt es sich dann, die gesamte Transaktion rückgängig zu machen? Gibt es keine eleganten Entschädigungs- oder Fehlertoleranzmaßnahmen? 2. Wie viele Punkte beinhalten verteilte Transaktionen? Muss es eine große Reihe von Echtzeitoperationen geben? Kannst du nicht einige Punkte durch Benachrichtigungsoperationen straffen? 3. Haben Sie nach dem Start einer verteilten Transaktion transaktionsunabhängige Operationen durchgeführt, obwohl diese Operationen nicht transaktionsbezogen waren? (z. B. Daten lesen, berechnen, warten, bis der Benutzer eine Nachricht zurückgibt, auf die Rückkehr anderer Module warten usw.) 4. Sie haben doch nicht einige Leseoperationen in die Transaktion gezählt, oder? Dies ist ein leichter Fehler, wenn Sie eine ausgewählte Operation in die Transaktion einbinden. 5. Einige Schritte Ihrer Operation können nach Abschluss aller Operationen ausgeführt werden. Diese Art von Operation weist offensichtliche Benachrichtigungsmerkmale auf. Benachrichtigungsoperationen sagen: Ich gebe Ihnen eine Benachrichtigung und garantiere Ihnen, dass die Benachrichtigung Sie erreicht; Sie müssen diese Mitteilung aufnehmen und sicherstellen, dass sie bearbeitet wird, aber Sie müssen sich nicht sofort damit auseinandersetzen, sobald ich Sie benachrichtige. Diese Operation kann offensichtlich mit einer anderen Aufgabe durchgeführt werden.
4. Achten Sie bei der Verwendung verteilter Transaktionen auf die folgenden Punkte 1: Stellen Sie sicher, dass die an der Transaktion teilnehmende Maschine die Unterstützung für verteilte Transaktionen aktiviert hat. 2: Wenn die Firewall aktiviert ist, müssen Sie den MSDTC-Prozess als Ausnahme setzen. 3: Die an der Transaktion teilnehmende Maschine kann die Domäne nicht überqueren (falls es domänenübergreifend ist, hat Microsoft derzeit keine exakte Lösung); 4: Verwenden Sie verteilte Transaktionen nur, wenn Sie mehrere Datenbanken haben; wenn es sich um dieselbe Datenbank handelt, ist es am besten, SqlTransaction zu verwenden. 1. Zuerst die Referenz von System.Transactions hinzufügen (du musst die Net-Assembly hinzufügen)
Der Code im C#-Ruf lautet wie folgt:
Die Adresse der Blogs, die diese verteilte Transaktionsklasse erklären, ist sehr klar:http://www.cnblogs.com/artech/archive/2010/01/31/1660356.html
2. Setzen Sie die Konfiguration der Webserver- und SQL-Server-Umgebung ein
Kontrollpanel – > Systeme & Sicherheit – > Management-Tools – > Komponentendienste (Dies ist sowohl für WEB- als auch für SQL-Server erforderlich.)
Kontrollpanel – > Systeme & Sicherheit – > Management-Tools – > Services
(Dies ist sowohl für WEB- als auch für SQL-Server erforderlich.)
Kontrollpanel – > System & Sicherheit – > Windows-Firewall
(Dies ist sowohl für WEB- als auch für SQL-Server erforderlich.)
3. MSSQL-Konfiguration
Für Serververbindungen klickt man mit der rechten Maustaste – > Eigenschaften
4. Hosts konfigurieren (nur den WEB-Server konfigurieren, falls nicht, auch auf dem SQL-Server konfigurieren)
C:\Windows\System32\drivers\etc hosts-Datei, die mit Notepad geöffnet wird (SQL-Server-Informationen müssen in der Hosts-Datei auf dem WEB-Server konfiguriert werden) (Wenn der Test fehlschlägt, konfigurieren Sie die Informationen des Webservers in der Datei Hosts auf dem SQL-Server.)
|