In der Programmierung werden häufig Transaktionen verwendet. Bei der sogenannten Transaktion handelt es sich um eine Reihe von Vorgängen, die alle erfolgreich sein müssen. Solange ein Vorgang fehlschlägt, müssen auch alle anderen Schritte rückgängig gemacht werden. Wenn Sie beispielsweise ASP verwenden, um ein Netzwerk-Festplattensystem zu entwickeln, muss der Benutzerregistrierungsteil Folgendes tun:
Benutzerinformationen in der Datenbank aufzeichnen, einen Ordner öffnen, in dem der Benutzer das Initialisierungsbenutzerbetriebsprotokoll speichert.
Diese drei Schritte müssen verwendet werden Transaktionen, andernfalls führt ein Ausfall des Festplattenvorgangs ohne Rückgängigmachen des Datenbankvorgangs zum Phänomen eines „toten Benutzers“, der sich nur anmelden, aber nicht bedienen kann.
Aufgrund der besonderen Entwicklungsgeschichte von Datenbanksystemen verfügt alles von Access bis DB2 über Transaktionsunterstützung. Daher können die obigen Schritte wie folgt ausgedrückt werden:
Bei Fehler fortsetzen Nächster
Schritt 1:
Benutzerinformationen in der Datenbank in einer Transaktionsumgebung aufzeichnen.
Wenn Fehler, dann
Schließen Sie die Verbindung und beenden Sie Else
Schritt 2: Erstellen Sie den Ordner „If Err Then“.
Machen Sie den ersten Datenbankvorgang rückgängig und beenden Sie Else
Schritt 3: Betreiben Sie die Protokolldatenbank in einer Transaktionsumgebung. Wenn Err Then
Machen Sie den ersten Schritt rückgängig, löschen Sie den im zweiten Schritt erstellten Ordner und beenden Sie End If
Ende wenn
Ende wenn
Senden Sie die Transaktion des ersten Datenbankvorgangs. Senden Sie die Transaktion des zweiten Datenbankvorgangs.
Das Ende
muss bei jedem Schritt beurteilt werden. Wenn dies fehlschlägt, müssen Sie die vorherigen Schritte manuell zurücksetzen, was das Programm kompliziert und schwer verständlich macht. Wenn das Programm in Zukunft aktualisiert wird und weitere Schritte hinzugefügt werden, müssen weitere Ebenen von If...Else...End If verschachtelt werden, was den Programmablauf komplizierter macht.
Die richtige Lösung besteht darin, die Transaktionskontrollfunktion von ASP zu verwenden. Durch die Kontaktaufnahme mit dem MTS-Dienst kann IIS eine Vielzahl von Systemen steuern, die Transaktionen unterstützen. Wenn das Programm ein „Fehler“-Signal sendet, werden alle Systeme, die Transaktionen unterstützen, automatisch zurückgesetzt, auch wenn der Vorgang offiziell abgeschlossen wurde Support-Transaktionen werden ebenfalls zurückgesetzt. Bietet eine praktische manuelle Rollback-Methode. Das obige Beispiel wird mit der ASP-Transaktionskontrollfunktion wie folgt umgeschrieben:
<%@ TRANSACTION = Required %>
Bei Fehler Fortsetzung Weiter
Set Conn=Server.CreateObject("ADODB.Connection")
Verbindung offen....
Conn.Execute „INSERT....“
Verbind.Schließen
Setze Conn=Nothing
Setze Conn2=Server.CreateObject("ADODB.Connection")
Conn2.Open....
Conn2.Execute „INSERT....“
Conn2.Close
Setze Conn2=Nothing
Setze FSO=Server.CreateObject("Scripting.FilesystemObject")
FSO.CreateFolder "...."
Wenn Fehler, dann
ObjectContext.SetAbort 'Benachrichtigen Sie alle Komponenten, die Transaktionen zum Rollback unterstützen, und führen Sie manuellen Rollback-Code aus
Anders
ObjectContext.SetComplete
Ende wenn
Legen Sie FSO=Nothing
Sub OnTransactionAbort fest
Response.Write „Fehler“
FSO.DeleteFile Server.Mappath("a.txt") 'FSO manuelles Rollback – Ordner löschen
Sub beenden
SubOnTransactionCommit
Response.Write „Schließen Sie die Aufgabe erfolgreich ab“
Sub beenden
%>
Das <%@ TRANSACTION = Required %> in der ersten Zeile gibt an, dass die ASP-Datei dieser Seite MTS-Transaktionsunterstützung erfordert. Alle Vorgänge in der Mitte werden in normaler Reihenfolge geschrieben, ohne Rücksicht auf Rollback-Probleme. Stellen Sie fest, ob am Ende des Programms Fehler vorliegen. Wenn ja, rufen Sie die SetAbort-Methode von ObjectContext auf und benachrichtigen Sie alle Komponenten, die Transaktionen über den MTS-Dienst unterstützen (hauptsächlich Datenbanken), und führen Sie Sub OnTransactionAbort aus, um Vorgänge, die keine Transaktionen unterstützen, manuell zurückzusetzen Die SetComplete-Methode des ObjectContext, Sub OnTransactionCommit, wird ausgeführt, um eine Erfolgsmeldung anzuzeigen.
Das gesamte ASP-Programm muss keinen redundanten Code für Fehlerbeurteilung und Rollback-Vorgänge schreiben. Er muss nur am Ende beurteilt werden. Auch wenn in der Zukunft mehrstufige Vorgänge hinzugefügt werden, muss er nur in Sub OnTransactionAbort gesteuert werden. Es ist sehr praktisch und Programmierer können sich auf das prozedurale Schreiben konzentrieren, anstatt fehlerkorrigierenden Code zu schreiben.
Tatsächlich bietet ASP auch viele weitere nützliche Funktionen, die darauf warten, dass wir sie verwenden. Denken Sie nicht, dass seine Funktionen schwach sein müssen, weil ASP eine Skriptsprache verwendet.