Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 25464|Antwort: 0

[Quelle] .net/C# Distributed TransactionScope

[Link kopieren]
Veröffentlicht am 05.05.2018 10:53:17 | | | |
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.)






Vorhergehend:Externe Links zu Beiträgen im Discuz X Forum fügen nofollow-Attribut hinzu
Nächster:Funktionen, die zwei Dezimalstellen nach dem Dezimalpunkt in C# behalten und wie man sie verwendet
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com