En programmation, les transactions sont souvent utilisées. La soi-disant transaction est une série d'opérations qui doivent toutes réussir. Tant qu'une opération échoue, toutes les autres étapes doivent également être annulées. Par exemple, en utilisant ASP pour développer un système de disque dur réseau, la partie enregistrement de l'utilisateur doit effectuer les opérations suivantes :
enregistrer les informations utilisateur dans la base de données, ouvrir un dossier pour que l'utilisateur stocke le journal des opérations utilisateur d'initialisation,
ces trois étapes doivent utiliser transactions, sinon en cas d'échec du fonctionnement du disque sans annuler l'opération de la base de données, cela entraînera un phénomène "d'utilisateur mort" qui ne peut que se connecter mais ne peut pas fonctionner.
En raison de l'historique de développement particulier des systèmes de bases de données, tout, depuis Access jusqu'à DB2, prend en charge les transactions. Par conséquent, les étapes ci-dessus peuvent être exprimées comme suit :
En cas d'erreur Reprendre l'
étape suivante 1 :
enregistrer les informations utilisateur dans la base de données dans un environnement de transaction
Si Err Alors
Fermez la connexion et quittezElse
Étape 2 : Créez le dossier If Err Then
Annulez la première opération de base de données et quittez Else
Étape 3 : Exploiter la base de données de journaux dans un environnement de transactionSi Err Alors
Annulez la première étape, supprimez le dossier créé à la deuxième étape et quittez End If
Fin si
Fin si
Soumettez la transaction de la première opération de base de données. Soumettez la transaction de la deuxième opération de base de données.
La fin
doit être jugée à chaque étape. En cas d'échec, vous devez annuler manuellement les étapes précédentes, ce qui rend le programme compliqué et difficile à comprendre. Si le programme est mis à jour à l'avenir et que d'autres étapes sont ajoutées, davantage de couches de If...Else...End If devront être imbriquées, ce qui rendra le déroulement du programme plus compliqué.
La bonne solution consiste à utiliser la fonction de contrôle des transactions d'ASP. En contactant le service MTS, IIS peut contrôler une variété de systèmes prenant en charge les transactions. Lorsque le programme envoie un signal « d'échec », tous les systèmes prenant en charge les transactions seront automatiquement annulés, même si l'opération n'est pas officiellement terminée ; les transactions de support seront également annulées. Fournit une méthode de restauration manuelle pratique. L'exemple ci-dessus est réécrit à l'aide de la fonction de contrôle de transaction ASP comme suit :
<%@ TRANSACTION = Required %>
En cas d'erreur, reprendre ensuite
Définir Conn=Server.CreateObject("ADODB.Connection")
Conn.Ouvert....
Conn.Exécuter "INSÉRER...."
Conn.Fermer
Définir Conn=Rien
Définir Conn2=Server.CreateObject("ADODB.Connection")
Conn2.Ouvert....
Conn2.Exécutez "INSÉRER...."
Conn2.Fermer
Définir Conn2=Rien
Définir FSO=Server.CreateObject("Scripting.FilesystemObject")
FSO.CreateFolder "...."
Si Err Alors
ObjectContext.SetAbort 'Avertissez tous les composants qui prennent en charge les transactions à restaurer et exécutez le code de restauration manuelle
Autre
ObjectContext.SetComplete
Fin si
Définir FSO=Nothing
Sub OnTransactionAbort
Réponse. Écrivez « Erreur »
FSO.DeleteFile Server.Mappath("a.txt") 'Rollback manuel FSO - supprimer le dossier
Fin du sous-marin
Sous-OnTransactionCommit
Response.Write "Terminez la tâche avec succès"
Fin du sous-marin
%>
Le <%@ TRANSACTION = Required %> dans la première ligne indique que le fichier ASP de cette page nécessite la prise en charge des transactions MTS. Toutes les opérations intermédiaires sont écrites dans un ordre normal sans tenir compte des problèmes de restauration. Déterminez s'il y a des erreurs à la fin du programme. Si tel est le cas, appelez la méthode SetAbort d'ObjectContext. IIS informera tous les composants qui prennent en charge les transactions via le service MTS de restaurer (principalement les bases de données) et exécutera Sub OnTransactionAbort pour restaurer manuellement les opérations qui ne prennent pas en charge les transactions, si aucune erreur ne se produit, appelez ; La méthode SetComplete d'ObjectContext, Sub OnTransactionCommit sera exécutée pour afficher un message de réussite.
L'ensemble du programme ASP n'a pas besoin d'écrire du code redondant pour les opérations de jugement d'erreur et d'annulation. Il n'a besoin d'être jugé qu'à la fin. Même si des opérations en plusieurs étapes sont ajoutées à l'avenir, il n'a besoin d'être contrôlé que dans Sub OnTransactionAbort. C'est très pratique et les programmeurs peuvent se concentrer sur l'écriture procédurale plutôt que sur l'écriture de code de correction d'erreurs.
En fait, ASP fournit également de nombreuses autres fonctions utiles, en attendant que nous les utilisions. Ne pensez pas que parce qu'ASP utilise un langage de script, ses fonctions doivent être faibles.