En programación, se utilizan a menudo transacciones. La llamada transacción es una serie de operaciones que deben tener éxito siempre que una operación falle, todos los demás pasos también deben deshacerse. Por ejemplo, al usar ASP para desarrollar un sistema de disco duro de red, la parte de registro del usuario debe hacer lo siguiente:
registrar la información del usuario en la base de datos, abrir una carpeta para que el usuario almacene el registro de operaciones del usuario de inicialización,
estos tres pasos deben usarse transacciones; de lo contrario, en caso de operación del disco, una falla sin deshacer la operación de la base de datos dará como resultado un fenómeno de "usuario muerto" que solo puede iniciar sesión pero no puede operar.
Debido al especial historial de desarrollo de los sistemas de bases de datos, todo, desde Access hasta DB2, tiene soporte para transacciones. Por lo tanto, los pasos anteriores se pueden expresar de la siguiente manera:
En caso de error, reanudar. Siguiente
paso 1:
registrar la información del usuario en la base de datos en un entorno de transacciones.
Si Err Entonces
Cierra la conexión y sal. Else
Paso 2: crea la carpeta If Err Then
Revertir la primera operación de la base de datos y salir de lo contrario
Paso 3: operar la base de datos de registros en un entorno de transaccionesSi Err Entonces
Retroceda el primer paso, elimine la carpeta creada en el segundo paso y salga de Finalizar si
Terminar si
Terminar si
Envíe la transacción de la primera operación de la base de datos. Envíe la transacción de la segunda operación de la base de datos.
El final
debe juzgarse en cada paso. Si falla, debe retroceder manualmente los pasos anteriores, lo que hace que el programa sea complicado y difícil de entender. Si el programa se actualiza en el futuro y se agregan otros pasos, será necesario anidar más capas de If...Else...End If, lo que complicará el flujo del programa.
La solución correcta es utilizar la función de control de transacciones de ASP. Al comunicarse con el servicio MTS, IIS puede controlar una variedad de sistemas que admiten transacciones. Cuando el programa envía una señal de "falla", todos los sistemas que admiten transacciones retrocederán automáticamente, incluso si la operación no se ha completado oficialmente; las transacciones de soporte también se revertirán Proporciona un método de reversión manual conveniente. El ejemplo anterior se reescribe utilizando la función de control de transacciones ASP de la siguiente manera:
<%@ TRANSACTION = Requerido %>
En caso de error, reanudar el siguiente
ajuste Conn=Server.CreateObject("ADODB.Connection")
Conexión.Abierto....
Conexión.Ejecutar "INSERT...."
Conexión.Cerrar
Establecer Conn=Nada
Establecer Conn2=Server.CreateObject("ADODB.Connection")
Conn2.Abrir....
Conn2.Ejecutar "INSERT...."
Conn2.Cerrar
Establecer Conn2=Nada
Establecer FSO=Server.CreateObject("Scripting.FilesystemObject")
FSO.CreateFolder "..."
Si Err Entonces
ObjectContext.SetAbort 'Notifica a todos los componentes que admiten transacciones para revertir y ejecutar código de reversión manual
Demás
ObjetoContexto.SetComplete
Terminar si
Establecer FSO = Nada
Sub OnTransactionAbort
Respuesta.Escribe "Error"
FSO.DeleteFile Server.Mappath("a.txt") 'Reversión manual de FSO: eliminar carpeta
Subtítulo final
SubOnTransactionCommit
Respuesta.Escribe "Completa la tarea con éxito"
Subtítulo final
%>
El <%@ TRANSACTION = Required %> en la primera línea indica que el archivo ASP de esta página requiere soporte de transacciones MTS. Todas las operaciones intermedias se escriben en el orden normal sin considerar problemas de reversión. Determine si hay errores al final del programa. Si es así, llame al método SetAbort de ObjectContext para notificar a todos los componentes que admiten transacciones a través del servicio MTS que reviertan (principalmente bases de datos) y ejecute Sub OnTransactionAbort para revertir manualmente las operaciones que no admiten transacciones, si no se producen errores, llame. Se ejecutará el método SetComplete de ObjectContext, Sub OnTransactionCommit para mostrar un mensaje de éxito.
Todo el programa ASP no necesita escribir código redundante para el juicio de errores y las operaciones de reversión. Solo necesita juzgarse al final. Incluso si se agregan operaciones de varios pasos en el futuro, solo necesita controlarse en Sub OnTransactionAbort. Es muy conveniente y los programadores pueden concentrarse en la escritura de procedimientos en lugar de escribir código de corrección de errores.
De hecho, ASP también proporciona muchas más funciones útiles, esperando que las usemos. No crea que debido a que ASP usa un lenguaje de secuencias de comandos, sus funciones deben ser débiles.