TransactionScope的优缺点是什么?

8
< p > TransactionScope 类在C#中有哪些优缺点?

谢谢。


糟糕的翻译:TransactionScope 的超时功能很烂 - Evgeniy Berezovsky
3个回答

5

MSDN 的一些优势:

TransactionScope的好处:

  • 事务范围内的代码不仅是事务性的,而且是可提升的。事务从LTM开始,根据其与资源或远程对象的交互方式的特性,System.Transactions将对其进行必要的晋升。
  • 该范围独立于应用程序对象模型 - 任何代码片段都可以使用TransactionScope,因此可以成为事务性代码。没有特殊的基类或属性。
  • 没有必要显式地向事务注册资源。任何System.Transactions资源管理器都将检测到由范围创建的环境事务,并自动注册。
  • 总的来说,即使对于涉及事务流和嵌套的更复杂的场景,也是一种简单直观的编程模型。

3

好的方面:

可以在数据库上下文之外进行交易。将记录插入数据库。将文件写入磁盘。

坏的方面:

在使用TransactionScope的客户机上需要MSDTC访问权限。


2
它不是只有在连接到两个或更多不同的服务器时才需要访问权限吗?它开始时很轻便,然后自我升级。 - Adam Houldsworth

0

仅仅是为了补充/澄清Incognito所说的:

  • TransactionScopes使得实现ACID事务变得简单(即您不需要编写显式的“回滚”或清理代码)
  • TransactionScope可以协调诸如数据库、消息队列和事务文件系统之类的资源在一个事务下进行操作
  • Re TransactionScopes很直观 - 例如SQL等资源将自动/无缝地检测到环境事务并注册为可用。

唯一的“坏”方面是您需要知道:

  • TransactionScope的默认隔离级别是READ SERIALIZABLE,这通常太“强”了,可能会导致阻塞和死锁。建议对大多数事务使用ReadCommitted。
  • 如果在TransactionScope中使用了多个数据库/多个并发连接/多个资源(例如SQL和MSMQ),则TransactionScope将升级事务到DTC。但是,在单线程/单数据库场景中,可以通过在打开新连接之前关闭连接(或始终保持一个连接打开,但不建议这样做)来避免这种情况。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接