.NET 数据访问架构指南12

时间:2010-02-01 10:02:26  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:的系统的完整性。        例如,考虑一个基于Web的零售应用程序,它用于处理购买订单。每个订单需要3个完全不同操作,这些操作涉及到3个数据库更新:   库存水准必须减少所订购的数量。         所购买的量必须记入客户的信用等级。       &...
  正文:

事务处理
  
    实际上所有用于更新数据源的面向商业的应用程序都需要事务处理支持。通过提供四个基础担保,即众所周知的首字缩写ACID:可分性,一致性,分离性,和耐久性,事务处理将用于确保包含在一个或多个数据源中的系统的完整性。
  
    例如,考虑一个基于Web的零售应用程序,它用于处理购买订单。每个订单需要3个完全不同操作,这些操作涉及到3个数据库更新:
  库存水准必须减少所订购的数量。
  
  
  所购买的量必须记入客户的信用等级。
  
  
  新订单必须增加到数据库中。
    这三个不同的操作作为一个单元并自动执行是至关重要的。三个操作必须全部成功,或都不成功--任何一个操作出现误差都将破坏数据完整性。事务处理提供了这种完整性及其它保证。
  
    可以采用很多方法将事务管理合并到数据访问代码中。每种方法适合下面两种基础编程模型之一。
  手工事务处理。可以直接在组件代码或存储过程中分别编写利用ADO.NET 或 Transact-SQL事务处理支持特性的代码。
  
  
  自动化(COM+)事务处理。可以向.net类中增加声明在运行时指定对象事务处理需要的属性。这种模型使你能方便地配置多个组件以使它们在同一事务处理内运行。
    尽管自动化事务处理模型极大地简化了分布式事务处理过程,但两种模型都用于执行本地事务处理(即对单个资源管理器如SQL Server 2000执行的事务处理)或分布式事务处理(即,对位于远程计算机上的多个资源管理执行的事务处理)。
  
    你也许会试图利用自动化(COM+)事务处理来从易于编程的模型中获益。在有多个组件执行数据库更新的系统中,这种优点更明显。然而,在很多情况下,应当避免这种事务处理模型所带来的额外开销和性能损失。
  
    本节将指导你根据特定的应用程序环境选择最合适的模型。
  
    选择事务处理模型
  
    在选择事务处理模型前,首先应当考虑是否真正需要事务处理。事务处理是服务器应用程序使用的最昂贵的资源,在不必要使用的地方,它们降低了扩展性。考虑下面用于管理事务处理使用的准则:
  只在需要跨一组操作获取锁并需要加强ACID规则时才执行事务处理。
  
  
  尽可能短地保持事务处理,以最小化维持数据库锁的时间。
  
  
  永远不要将客户放到事务处理生命周期的控制之中。
  
  
  不要为单个SQL语句使用事务处理。SQL Server自动把每个语句作为单个事务处理执行。
    自动化事务处理与手工事务处理的对比
  
    尽管编程模型已经对自动化事务处理进行了简化,特别是在多个组件执行数据库更新时,但本地事务处理总是相当快,因为它们不需要与微软DTC交互。即使你对单个本地资源管理器(如SQL Server)使用自动化事务处理,也是这种情况(尽管性能损失减少了),因为手式本地事务处理避免了所有不必要的与DTC的进程间通信。
  
    对于下面的情况,需使用手工事务处理:
  对单个数据库执行事务处理。
    对于下列情况,则宜使用自动事务处理:
  需要将单个事务处理扩展到多个远程数据库时。
  
  
  需要单个事务处理拥有多个资源管理器(如数据库和Windows 2000消息队列(被称为MSMQ)资源管理器)时。
    注意 避免混用事务处理模型。最好只使用其中一个。
  
    在性能足够好的应用程序环境中,(甚至对于单个数据库)选择自动化事务处理以简化编
  程模型,这种做法是合理的。自动化事务处理使多个组件能很容易地执行现一事务处理中的多个操作。
  
    使用手工事务处理
  
    对于手工事务处理,可以直接在组件代码或存储过程中分别编写使用ADO.NET 或 Transact-SQL事务处理支持特性的代码。多数情况下,应选择在存储过程中控制事务处理,因为这种方法提供了更高的封装性,并且在性能方面,此方法与利用ADO.NET 代码执行事务处理兼容。
  
    利用ADO.NET执行手工事务处理 《.NET 数据访问架构指南12》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/12700.html


关键字:

关于《.NET 数据访问架构指南12》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td