.net 2.0 你是什么样运用事务处理?

     事务处理作为店铺级开发必备的基本功设备, .net 2.0由此System.Transactions对事情提供强有力的接济.你照旧在使用.net
1.x上面的很不佳用的事务处理吗?
    

先介绍一下两种工作:
1. 单对象单财富

图片 1
2. 多目的单资源

图片 2
3. 多目的多能源(分布式事务, 使用两段提交协议)
图片 3
  在ADO.Net 1.0下有三种采取Transaction的方法. 一种是在必要工作的靶子中显式的调用事务处理, 还有一种是使用Enterprise 瑟维斯的注明式的方法.那种办法:使用工作的靶子急需后续瑟维斯dComponent;即便不涉及多财富的分布式事务而独自是关联到了多少个目的的容易事务(早先介绍的第2种业务),作者也要运用此方法,影响了频率. 那样的弊病和J2ee中的都在本土的Entity Bean之间进行报纸公布很像,杀鸡也只可以用牛刀.;不可防止的采取了Com+;使用Enterprise Services的事情总是线程安全的, 相当于说您不可以让八个线程参加到同多个事情中.

ADO.Net2.0 提供的新的作业模型综合了前双方的亮点:1 在简短(不关乎分布式)事务中也可以应用申明式的事务处理方法, 而不必使用Com+容器, ADO.net 2.0中提供了2个轻量级的事体容器. 2 用户根本不需求考虑是简约事务依然分布式事务. 新模型会活动依照业务中涉嫌的对象财富判断使用何种事务管理器. 简而言之, 对于其余的事情用户只要使用相同种艺术开展处理. 此外对嵌套事务和工作的隔离级别也提供了支撑。

ADO.Net2.0 提供的新的事体模型在System.Transactions。System.Transactions 是 .NET 2.0 框架中新增的工作控件命名空间。它是一种处理分布式事务的新点子,没有 COM+ 注册和 COM+ 目录的支出。请留心,Microsoft 分布式事务协调器用于开始化事务。从公司服务活动到 System.Transactions 可以简化布署,因为后者不须求接纳 COM+ 目录。使用 COM+ 目录时,大家忽视了其它一些附加的功效,只保留了分布式事务资助。System.Transaction 使得在 ASP.NET 2.0 应用程序中编程和配置分布式应用程序变得不得了回顾。System.Transactions 在运作时的天性提升了 百分之五十,因为它防止了对象实例化的 COM+ 目录查找所暴发的支出。最终三个亮点是,针对 SQL Server 贰零零柒 运维时,System.Transactions 使用的Lightweight
Transaction
Manager
。System.Transactions 可以检测到某些分布式事务哪天针对宿主在一个 SQL Server 2006 实例上的三个差距数据库运维。在那种地方下,它亦可将该分布式事务进步为一个当地工作,那样就可防止与分布式事务登录/两品级提交相关的整个开支,从而极大地提升品质。

System.Transactions 命名空间同时提供依照Transaction 类的显式编程模型,以及利用 TransactionScope 类的隐式编程模型,在后一种模型中,事务由该基础结构自动管理。强烈指出使用特别有利的隐式模型进行开发.TransactionScope
类通过隐式在分布式事务中注册连接,使代码块事务化。必须在
TransactionScope 块的尾声调用 Complete
方法,然后再离开该代码块。离开代码块将调用 Dispose
方法。假如引发的那二个导致代码离开范围,将认为工作已暂停。大家指出您使用
using 代码块,以确保在退出 using 代码块时,在 TransactionScope
对象上调用
Dispose。如果不只怕提交或回滚挂起的工作,只怕会对质量造成惨重影响,因为
TransactionScope 的暗许超时为 1 秒钟。假如不采纳 using 语句,必须在 Try
代码块中施行全部工作,并在 Finally 代码块中显式调用 Dispose
方法。借使在
TransactionScope 中发生卓殊,事务将符号为不雷同并被弃用。在
TransactionScope
断开后,事务将回滚。假使未发生其余分外,参加的业务将付出。

只顾
专断认同处境下,TransactionScope 类创造二个 IsolationLevel 为 Serializable
的作业。按照应用程序的不等,恐怕须求考虑降低隔离级别,避防止应用程序中冒出大量的争用。提出您只在分布式事务中实施更新、插入和删除,因为那些操作会占用多量的数据库能源。选拔语句大概会对数据库财富拓展不须要的锁定,在少数方案中,恐怕需求利用工作进行采纳。任何非数据库工作应在业务限制之外完结,除非工作事关任何事务化的能源管理器。尽管工作限制内的百般会使业务不能提交,但是,TransactionScope
类没有规定回滚您的代码在事情自个儿范围之外所作的其余改变。假若在工作回滚时必要运用某项措施,必须协调编辑
IEnlistmentNotification 接口的贯彻并显式在业务中注册。

相关文章