Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 25464|Respuesta: 0

[Fuente] .net/C# TransactionScope distribuido

[Copiar enlace]
Publicado en 5/5/2018 10:53:17 | | | |
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)






Anterior:Enlaces externos a publicaciones en el foro de Discuz X añaden el atributo nofollow
Próximo:Funciones que mantienen dos decimales después del punto decimal en C# y cómo usarlas
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com