.net事务机制
事务的ACID属性:
原则性(Atomicity)
一致性(Consistency)
隔离性(Isolation)
持久性(Durability)
.net开发者可以使用一下午中事务机制:
SQL和存储过程级别的事务
优势:所有事务逻辑包含在一个单独调用中;拥有运行一个事务的最佳性能;独立于应用程序
限制:事务上下文仅存在于数据库调用中;数据库代码与数据库系统有关
ADO.NET级别的事务
优势:简单;和数据库事务差不多快;事务可以跨越多个数据库访问;独立于数据库,不同数据库的专有代码被隐藏
限制:事务执行在数据库连接层上,所以需要在执行事务过程中手动维护一个连接(不支持跨多个连接的事务处理)
ASP.NET页面级别的事务(ContextUtil,全是静态成员,直接使用。。)
优势:实现简单,不需要额外编码
限制:页面的所有代码都是同个事务,这样的事务可能很大。
企业及服务COM+事务(必须继承System.EnterpriseServices.ServicedComponent,btw,WebService就继承自它,所以WebService支持COM+事务;它有手动处理自动处理(方法前加属性[AutoComplete(true)])两种方式)
前提:需要强名字;使用事务对象需要继承ServicedComponent
优势:执行分布式事务,多个对象可以轻松的运行在同一个事务处理中,事务处理还可以自动登记;获得COM+服务,诸如对象构建和对象池等
缺点:由于DTC和COM互操作性开销,导致性能降低;COM+1.0要求每个事务的隔离级别设为Serializable;使用EnterpriseServices的事务总是线程安全的,也就是说无法让多线程参与到同一个事务中
System.Transactions事务处理(此命名空间专注于控制事务性行为)
1. 在分布式事务中登记
EnlistTransaction方法在分布式事务中登记(在一个事务中显式登记某个连接后,如果第一个事务尚未完成则无法取消登记或在另一个事务中登记该连接)
2.实现嵌套事务范围
3.事务范围附加选项

浙公网安备 33010602011771号