事务基础知识

来源:互联网 发布:O2O平台源码 编辑:程序博客网 时间:2024/06/06 02:48

  事务将多个任务绑定在一起。若其中一个任务失败,则另外一个任务也不会执行,回滚整个执行了的操作。若要确保发生可预测的行为,所有事务都必须具有基本的 ACID 属性(原子性、一致性、隔离性和持久性)。

     事务操作可限定于单个数据资源(即,只对某一个种数据对象操作),如数据库或消息队列。在这种情况下,本地事务由 System.Transactions 所提供的可提升性能的事务管理器管理。 当这些事务由数据资源(数据库或消息队列)控制时,它们具有高效性并易于管理。

     事务也可跨多个数据资源(如,事务中操作消息队列和数据库)。 使用分布式事务可以将在不同系统上执行的多种不同的操作合并到操作中。 在这种情况下,事务由位于每个系统中的 Microsoft 分布式事务协调器 (MSDTC) 进行协调。

     在使用 System.Transactions 所提供的类开发事务应用程序时,不必考虑需要使用哪种事务,也不必考虑所涉及的事务管理器。 System.Transactions 基础结构会自动管理这些事宜。

     System.Transactions 命名空间中的类所提供的基础结构通过支持在 SQL Server、ADO.NET、消息队列 (MSMQ) 和 Microsoft 分布式事务协调器 (MSDTC) 中启动的事务,使事务编程变得简单和高效。System.Transactions 命名空间提供基于 Transaction 类的显式编程模型和使用 TransactionScope 类的隐式编程模型,在后一种模型中,事务由该基础结构自动管理。

     TransactionScope 类提供了一种简单方法,无需与事务自身进行交互,就可以在参与事务时对代码块进行标记。事务范围可以自动选择和管理环境事务。由于 TransactionScope具有简单易用性和高效性,因此在开发事务应用程序时优先使用该类。

void RootMethod(){     using(TransactionScope scope = new TransactionScope())     {          /* Perform transactional work here */          SomeMethod();          scope.Complete();     }}void SomeMethod(){     using(TransactionScope scope = new TransactionScope())     {          /* Perform transactional work here */                    scope.Complete();     }}

转载地址:http://www.cnblogs.com/max007super/archive/2009/02/25/1398112.html