分布式事务
事务概念
并发控制的基本单位。所谓事务,它是一个操作序列逻辑操作的单元,要么成功,要么失败是不可分割的工作单位。
事务特性(ACID特性):
- 原子性(Atomicity):事务必须是原子工作单元,对于诗句修改,要么全执行,要么全都不执行。
- 一致性(Consistenty):事务在完成时,必须使所有的数据都保持一致状态。
- 隔离性(Isolation):并发事件所做的修改必须与任何其他并发事务所作的修改隔离。
- 持久性(Durability):一旦事务提交成功,数据修改是永久的。
事务管理器
LTM:轻量级事务管理器
- 管理本地事务
- 单个应用程序域中的事务
- 管理和实现俩个阶段提交协议
- 高效的资源管理器
KTM:在Vista核心中的新组建方便进行大量的错误回复工作
- KTM只能管理本地服务的事务
DTC:分布式事务协调器
- 分布式环境中运行事务
- 事务传播
- 跨机器,夸环境的事务管理器
WCF事务模式
- None 不启用
- client 客户启用 强制服务参与
- service 服务启用
- client/service 客户端或者服务本身启用事务
TransactionFlowOption
- TransactionFlowOption.NotAllowed:不参与任何事务(默认值)
- TransactionFlowOption.Allowed:允许参与事务。如果调用方(客户端)和服务Bingding启用了事务则参与。
- TransactionFlowOption.Mandatory:强制启用事务。调用方(客户端)喝服务Binding必须启用事务才能调用本服务。
WCF事务模式配置
- Client/Service Transaction 最常见的一种事务模型 通常有客户端或服务本身启用一个事务。设置步骤:
(1)、选择一个支持事务的Binding,设置TransactionFlow=true。
(2)、设置TransactionFlow(TransactionFlowOption.Allowed)。
(3)、设置OperationBehavior(TransactionScopeRequired=true) - Client Transcation 强制服务必须参与事务,而且必须是客户端启用事务。设置步骤:
(1)、选择一个支持事务的Bingding,设置TransactionFlow=true
(2)、设置TransactionFlow(TransactionFlowOption.Mandatory).
(3)、设置OperationBehavior(TransactionScopeRequired=true) - Service Transaction 服务必须启用一个根事务 而且不参与任何外部事务。设置步骤:
(1)、选择任何一种Bingding,设置TransactionFlow=FALSE(默认)
(2)、设置TransactionFlow(TransactionFlowOption.NotAllowed)
(3)、设置OperationBehavior(TransactionScopeRequired=true)
事务投票机制