代码之家  ›  专栏  ›  技术社区  ›  Brian MacKay

TransactionScope:它变得更好了吗?

  •  5
  • Brian MacKay  · 技术社区  · 17 年前

    当我进一步研究它时,这似乎是一个棘手而普遍的问题,有可能在生产中成为一个头疼的问题,所以我决定不以这种方式处理事务(尽管我非常喜欢它的语法,我真的很想让它工作)。

    这些问题仍然存在,还是可以安全使用?你现在经常使用它吗?

    3 回复  |  直到 17 年前
        1
  •  8
  •   Community Mohan Dere    6 年前

    here

    编辑:为了更具体地回答您的问题,以下是Strahl对TransactionScope的看法:

    传统上,TransactionScope是一个。NET包装器围绕分布式事务处理协调器(DTC),但其功能有所扩展。一个问题是,DTC在资源使用方面相当昂贵,它要求DTC服务实际上在机器上运行(这是另一个在客户端安装上特别麻烦的服务)。

    但是,最近对TransactionScope和SQL Server客户端驱动程序的更新使您可以使用TransactionScope类及其提供的易用性,而不需要DTC,只要您在单个数据库上运行,并且使用单个一致的连接字符串

        2
  •  1
  •   David Glass    17 年前

    我使用TransactionScope已经一年多了,没有出现任何问题。然而,该应用程序是一个用户数量非常少的内部应用程序。此外,数据库和应用程序位于同一服务器上。

    以下是有关TransactionScope的一些信息以及在哪里查找更多信息: 每当您创建TransactionScope对象时,它都会启动一个轻量级事务。然后,只要您使用支持轻量级事务的单个连接/资源,事务将由资源管理器处理,消耗尽可能少的资源,性能非常好。当您在事务作用域中添加第二个连接/资源时,事务管理器将自动升级为OleTx事务管理器,该管理器可以使用COM+DTC技术处理分布式事务。这也会发生在与不支持SQL Server 7/2000、Oracle和其他RDBMS等轻量级事务的资源管理器的单个连接上。

    以下是两种可能对您有所帮助的资源:

    Microsoft Windows Server 2003 Service Pack 1(SP1)和Microsoft Windows XP Service Pack 2(SP2)包含许多与安全相关的更新和更改。其中一些更改会影响Microsoft分布式事务处理协调器(MSDTC)服务 New functionality in the Distributed Transaction Coordinator service in Windows Server 2003 Service Pack 1 and in Windows XP Service Pack 2

    Juval Lowy关于系统的白皮书。交易: Introducing System.Transactions in the Microsoft .NET Framework version 2.0

        3
  •  1
  •   strmor    14 年前

    TransactionScope仍然存在问题。在我目前的项目中,我们不定期地遇到无法登记分布式事务异常和TransactionInDoubtException。这两个异常都与TransactionScope有关。解决这两种异常的一种方法是使用单个oracle连接(当然,如果适用)。 请阅读以下内容: Avoid unwanted Escalation to Distributed Transactions

    有关性能影响的信息,请阅读我的帖子: Performance impact using TransactionScope

    推荐文章