Guillermo:
        Desde ya muchisimas gracias por el dato y mil perdones porque no te
conteste antes, lo que pasa es que hoy tengo un día bastante complicado.

        Estuve viendo la Entlib 3.1 que me comentás y para sorpresa mia, (por lo
menos en los dos minutos que la ví por arriba), define la clase:
 - "Microsoft.Practices.EnterpriseLibrary.Data.TransactionScopeConnections"

Y te transcribo el summary de la documentación XML de la clase:

/// <summary>
///             This class manages the connections that will be used when 
transactions
are active
///             as a result of instantiating a <see cref="TransactionScope"/>. 
When a
transaction
///             is active, all database access must be through this single 
connection
unless you want
///             to use a distributed transaction, which is an expensive 
operation.
/// </summary>

        Que es prácticamente la segunda solución que comentaba en mi mail 
original,
es decir, esta clase define una especie de "pool de conexiones" pero solo de
las que participan en transacciones, de forma tal que cuando se requiere una
nueva conexión, si ya hay una creada dentro de la transacción la devuelve y
la libera automáticamente recién cuando la transacción finaliza y esto se
realiza capturando el evento "Transaction.TransactionCompleted".

        Desde ya, y es bueno que lo hayas aclarado en tu respuesta, esto aplica
solo a conexiones contra SQL Server 2005, ya que en cualquier otro caso,
(SQL 2000 o anterior, Oracle, etc), la transacción si o si escala a DTC mal
que nos pese.

        A su vez como por lo que veo esta librería esta disponible tanto para el
framework 2.0, (que estoy usando), como para el 3.0, estimo que este
problema no debe estar solucionado aún, (no se para la versión 3.5 del
framework).

        Vuelvo a agradecerte inmensamente la mano que me diste y te mando un 
fuerte
abrazo para vos y todos los de la lista!!!


-----Mensaje original-----
De: [email protected] [mailto:[EMAIL PROTECTED] nombre de
Guillermo Estevez
Enviado el: Miércoles, 24 de Octubre de 2007 09:38 p.m.
Para: [email protected]
Asunto: [puntonet] Implementar System.Transactions


Si utilizas el Data Access Application Block que viene con las Enterprese
Library 3.1, no vas a tener problema.
http://www.codeplex.com/entlib

En el proyecto que estoy trabajando utilizamos System.Transactions y con las
últimas versiones del DAAB las transacciones ya no escalan las transacciones
a DTC.
Siempre suponiendo que la base de datos es SQL server 2005!!!

Saludos,



-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Juan
Carlos Garcia
Sent: miércoles, 24 de octubre de 2007 18:13
To: [email protected]
Subject: [puntonet] Implementar System.Transactions

        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]








Responder a