Para citar la guía de otra persona: En el desarrollo real, ejecuta un evento y luego llama a otra interfaz para insertar datos; si hay una excepción en la lógica de procesamiento, los datos insertados previamente se convertirán en datos basura, Lo que queremos es poder definir todo el método como una transacción, y la clase TransactionScope proporciona un método sencillo que permite no tener que interactuar con la transacción en sí. para marcar un bloque de código como participante en una transacción. El objeto TransactionScope crea una transacción y establece la transacción a la propiedad Current de la clase de Transacción.
1. Ventajas de TransactionScope 1. Es más cómodo de usar. TransactionScope puede implementar transacciones implícitas, de modo que puedas escribir código de la capa de acceso a los datos sin considerar las acciones, pero controlar las transacciones en la capa de negocio. 2. Se pueden implementar transacciones distribuidas, como cross-database o MSMQ.
2. Desventajas de TransactionScope 1. El coste-rendimiento no es alto. Por ejemplo, solo controlas las transacciones de una biblioteca en "Ámbito". Usar "TransactionScope" es un poco desperdiciador. 2. En circunstancias normales, mientras uses "TransactionScope", necesitas configurar MSDTC, instalar un cortafuegos y abrir el puerto 139. Este puerto no puede cambiarse
3. Si tienes que usar transacciones distribuidas, tienes que pensarlo 1. ¿Esta operación tiene que estar incluida en la transacción? Si este paso no se completa o falla, ¿merece la pena revertir toda la transacción? ¿No hay una compensación elegante o medidas de tolerancia a fallos? 2. ¿Cuántos puntos implican las transacciones distribuidas? ¿Debe tener una gran cadena de operaciones en tiempo real? ¿No puedes simplificar algunos puntos mediante operaciones de notificación? 3. Después de iniciar una transacción distribuida, ¿realizaste operaciones independientes de la transacción, aunque estas operaciones no estuvieran relacionadas con la transacción? (por ejemplo, leer datos, calcular, esperar a que el usuario devuelva un mensaje, esperar la llamada de devolución de otros módulos, etc.) 4. No habrás contado algunas operaciones de lectura en la transacción, ¿verdad? Este es un error fácil de cometer cuando inscribes una operación de selección en la transacción. 5. Algunos pasos de tu operación pueden ejecutarse después de completar todas las operaciones. Este tipo de operación tiene características evidentes de notificación. Las operaciones de notificación dicen: te doy una notificación y te garantizo que la notificación llegará a ti; Debes tomar este aviso y asegurarte de que se procesa, pero no tienes que encargarte de ello en cuanto te lo notifique. Esta operación, obviamente, puede hacerse con otra tarea.
4. Presta atención a los siguientes puntos al utilizar transacciones distribuidas 1: Asegúrate de que la máquina que participa en la transacción tenga habilitado el soporte distribuido para transacciones. 2: Si la máquina tiene el cortafuegos activado, tienes que establecer el proceso msdtc como una excepción. 3: La máquina que participa en la transacción no puede cruzar el dominio (si es entre dominios, Microsoft no dispone de una solución exacta por ahora); 4: Usar transacciones distribuidas solo cuando tengas varias bases de datos; si es la misma base de datos, lo mejor es usar SqlTransaction. 1. Añadir primero la referencia de System.Transactions (necesitas añadir el ensamblador Net)
El código en la llamada C# es el siguiente:
La dirección de los blogs que explica esta clase de transacción distribuida es muy clara:http://www.cnblogs.com/artech/archive/2010/01/31/1660356.html
2. Establecer la configuración del servidor web y del entorno del servidor SQL
Panel de Control - Sistemas > y Seguridad - Herramientas de Gestión > - > Servicios de Componentes (Esto es necesario tanto para servidores WEB como SQL)
Panel de Control - Sistemas > y Seguridad - Herramientas de Gestión de > - Servicios >
(Esto es necesario tanto para servidores WEB como SQL)
Panel de control - > Sistema y Seguridad - > Cortafuegos de Windows
(Esto es necesario tanto para servidores WEB como SQL)
3. Configuración de MSSQL
Para conexiones de servidor, haz clic derecho - > propiedades
4. Configurar los anfitriones (solo configurar el servidor WEB, si no, configurarlo también en el servidor SQL)
C:\Windows\System32\drivers\etc hosts, que se abre con Notepad (La información del servidor SQL debe configurarse en el archivo Hosts del servidor WEB) (Si la prueba falla, configura la información del servidor web en el archivo Hosts del servidor SQL)
|