.net分布式事务控制

事务基本原理

事务将多个任务绑定在一起。例如,假设某个应用程序执行两个任务。它首先在数据库中创建一个新表。接着调用专用对象收集和格式化数据,并在新表中插入数据。这两个任务是相关甚至相互依赖的,因此除非可用数据填充表,否则应避免创建新表。在一个事务范围内执行两个任务会加强两者之间的关系。如果第二个任务失败,则第一个任务回滚到创建新表前的点。

为了确保可预知的行为,所有事务都必须处理基本 ACID 属性(原子、一致性、隔离和持久性)。这些属性加强了关键任务事务作为“全或无”命题的作用。总之,ACID 确保一组相关任务作为一个单元成功或失败。在事务处理术语中,事务要么提交,要么中止。要提交事务,所有参与者都必须保证对数据的任何更改将是永久的。不论系统崩溃或是发生其他无法预料的事件,更改都必须是持久的。只要有一个参与者无法做出此保证,整个事务就会失败。事务范围内的所有数据更改将回滚到特定设置点。

可将事务限制到一个数据资源,如数据库或消息队列。在此情况下,本地事务由 System.Transactions 提供的事务管理器管理,这将提高性能。这些事务由数据资源控制,管理起来轻松高效。

事务还可以跨越多个数据资源。分布式事务使您能够将在不同系统上发生的若干不同操作合并为单个的成功或失败操作。在此情况下,事务由驻留在各系统中的 Microsoft 分布式系统协调器 (MSDTC) 协调。

在您使用 System.Transactions 提供的类开发事务性应用程序时,就不必为所需要的事务类型或涉及的事务管理器而操心了。System.Transactions 基础结构自动为您管理它们。

在您创建事务时,可以指定应用于事务的隔离级别。该隔离级别由 IsolationLevel 类定义,用于确定其他事务将对您的事务影响的数据具有哪一访问级别。

您可以使用 ADO.NET、System.EnterpriseServices 或 System.Transactions 命名空间提供的新事务性编程模型创建事务。

转载于:https://www.cnblogs.com/fanrsh/archive/2006/09/05/495574.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值