SQL Server.net 2.0 你是什么利用事务处理?

     事务处理作为店铺级支必备的底蕴设备, .net 2.0由此System.Transactions对工作提供强大的支持.你还是于使用.net
1.x脚的不行不好用的事务处理吗?
    

事先介绍一下老三栽业务:
1. 单对象就资源

SQL Server 1
2. 多目标只是资源

SQL Server 2
3. 基本上目标多资源(分布式事务, 使用简单段子提交协议)
SQL Server 3
  于ADO.Net 1.0下蛋产生零星栽采取Transaction的方法. 一种植是于用工作的目标被显式的调用事务处理, 还生同样种植是应用Enterprise Service的声明式的方法.这种方法:使用工作的靶子需要后续ServicedComponent;即使不涉及多资源的分布式事务而单单是关系到了差不多个目标的大概事务(开头介绍的次种植业务),我哉只要下是方式,影响了频率. 这样的坏处和J2ee中之都当地方的Entity Bean之间进行报道很像,杀鸡也只能用牛刀.;不可避免的运了Com+;使用Enterprise Services的作业总是线程安全之, 也不怕是说公无法让多只线程参与到与一个政工中.

ADO.Net2.0 提供的初的事体型综合了前双方的长处:1 以简单(不涉及分布式)事务中呢得使声明式的事务处理方法, 而不必使用Com+容器, ADO.net 2.0遭到提供了一个轻量级的政工容器. 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 在运作时的性质提高了 50%,因为它们避免了靶实例化的 COM+ 目录查找所来的出。最后一个独到之处是,针对 SQL Server 2005 运行时,System.Transactions 使用的Lightweight
Transaction
Manager。System.Transactions 能够检测到某分布式事务何时针对宿主在一个 SQL Server 2005 实例上之少数个不等数据库运行。在这种情况下,它能以该分布式事务提升为一个地面工作,这样尽管只是免和分布式事务登录/两等提交相关的一切付出,从而极大地提高性能。

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 接口的兑现并显式在作业中登记。

相关文章