Investigando un poco como implementar la API System.Transactions,
(nueva en
el framework 2.0), me encuentro con un pequeño problema o error conceptual
del diseño de la misma por el cual:
Si dentro de una misma transacción se crea más de una conexión, aunque
no
sea al mismo tiempo, y aunque ambas conexiones sean idénticas la transacción
es promovida automáticamente a DTC lo cual tiene serias penalidades en
terminos de performance para la aplicación. Sobre todo para el caso de
aplicaciones sencillas que acceden a un único recurso, (es decir a la misma
base de datos en el mismo servidor) y no requieren de una transacción
distribuida.
Por lo que estuve investigando, este problema es conocido y se encuentra
comentado en el siguiente feedback de Microsoft "Transactions "needlessly"
promote when using the same connection" en
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?Feedbac
kID=171884
y en la discusión "Unwanted promotion using TransactionScope" en los foros
de microsoft en
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=113669&SiteID=1.
Al parecer este problema debería solucionarse en una próxima release,
pero
mientras tanto hay algunos posibles workaround's al problema, como se
comenta en:
- http://blogs.msdn.com/dataaccess/archive/2006/02/14/532026.aspx
-
http://geeks.ms/blogs/ivan/archive/2006/09/27/Sobre-las-transacciones_2C00_-
las-conexiones_2C00_-el-LTM-y-el-DTC.aspx
De ambas soluciones me gusta más la segunda, pero en fin, lo que quería
saber, y para eso los molesto, es si ustedes están utilizando
System.Transactions, que experiencia tienen, que solución les parece mejor
para el problema de la promoción innecesaria de LTM a DTC.
Desde ya, muchas gracias y saludos a todos!!!
Ing. Juan Carlos Garcia
Dto. Sistemas
Manuel Tienda León
mailto:[EMAIL PROTECTED]