由 System.Transactions 提供的功能
本节描述如何使用 System.Transactions 命名空间所提供的功能编写您自己的事务应用程序和资源管理器。 具体来说,本节介绍如何创建事务(本地或分布式事务)并与一个或多个参与者一起参与该事务。
System.Transactions 概述
System.Transactions 命名空间中的类所提供的基础结构通过支持在 SQL Server、ADO.NET、消息队列 (MSMQ) 和 Microsoft 分布式事务协调器 (MSDTC) 中启动的事务,使事务编程变得简单和高效。 System.Transactions 命名空间提供基于 Transaction 类的显式编程模型和使用 TransactionScope 类的隐式编程模型,在后一种模型中,事务由该基础结构自动管理。 有关如何使用这两种模型创建事务应用程序的更多信息,请参阅编写事务应用程序。
此外,System.Transactions 命名空间还提供了用于实现资源管理器的类型。 资源管理器管理事务中使用的持久或可变数据,并与事务管理器协调工作,共同为应用程序提供了原子性和隔离性的保证。 由 System.Transactions 基础结构提供的事务管理器支持的事务可涉及到多个可变资源或单个持久资源。 有关实现资源管理器的更多信息,请参阅实现资源管理器。
此外,事务管理器还通过与基于磁盘的事务管理器(如 DTC)进行协调,透明地将本地事务升级为分布式事务,此时另一个持久资源管理器会将自身登记到事务中。 System.Transactions 基础结构提供增强性能的关键方式有两种。
动态升级,它可确保事务跨多个分布式资源时 System.Transactions 基础结构仅使用 MSDTC。 有关动态升级的更多信息。 请参阅事务管理升级主题。
可提升的登记,如果某个资源是参与事务的唯一实体,则允许该资源(如数据库)取得事务的所有权。 以后在需要时,System.Transactions 基础结构仍然可以将事务管理升级到 MSDTC。 这样进一步减少了使用 MSDTC 的机会。 使用单阶段提交和可提升的单阶段通知主题详细介绍了可提升的登记。
System.Transactions 命名空间定义了三种限制访问它所公开的资源类型的信任级别:AllowPartiallyTrustedCallers (APTCA)、DistributedTransactionPermission(DTP) 和完全信任。 有关各信任级别的更多信息,请参阅访问资源时的安全信任级别。
本节内容
编写事务应用程序
System.Transactions 命名空间提供了两种用于创建事务应用程序的模型。 使用事务范围实现隐式事务介绍 System.Transactions 命名空间如何支持使用 TransactionScope 类创建隐式事务。
使用可提交事务实现显式事务介绍 System.Transactions 命名空间如何支持使用 CommittableTransaction 类创建显式事务。
有关介绍事务应用程序编写的其他主题,请参阅编写事务应用程序。
实现资源管理器
若要实现可参与事务的资源管理器,请参阅实现资源管理器。 该节将介绍资源登记、事务提交、故障后恢复以及最佳优化实践。