事务是我们编程中不可缺少的一部分,我们有的时候很难控制好事务,这里我们就介绍关于WCF事务管理器的一些知识要领。分布式事务的实现要依靠第三方事务管理器来实现。他负责管理个个事务的执行情况。最后根据全部的事务执行结果,决定提交或者回滚整个事务。这个也就是通常所说的两阶段提交协议。通常来说WCF事务管理器有3种:LTM、KTM、DTC。他们应用的场合不同。由于事务有本地和分布式事务的区别。所以三种协议使用的场合也不相同。下面依次详细介绍:
#T#LTM:轻量级事务管理器,它只能管理本地事务,单个应用程序域中的事务,它根据轻量级事务协议来管理和实现两阶段提交协议。 LTM是一种高效的资源管理器。它只能管理本地事务。在.NET2.0中经常使用。WCF事务编程中我们可以使用其来管理本地事务。
KTM:在Vista核心中的新组件,其目的是方便进行大量的错误恢复工作,而且过程几乎是透明的,而KTM之所以可以做到这一点,是因为它可以作为事务客户端接入的一个WCF事务管理器进行工作。与LTM一样, KTM只能管理一个本地服务的事务。而且不支持事务传播给别的服务。
DTC:.NET Framework 依靠 MTS/COM+ 服务来支持自动事务。COM+ 使用 Microsoft Distributed Transaction Coordinator (DTC) 作为事务管理器和事务协调器在分布式环境中运行事务。分布式事务协调器 (DTC) 服务可协调更新两个或多个受事务保护的资源的事务, 如数据库、消息队列、文件系统等等。这些受事务保护的资源可能位于单个计算机上,或分布在许多网络计算机上。DTC可以使用OleTx或者WSAT协议。 WCF可以借助DTC实现分布式事务机制。DTC可以创建事务、传播事务信息、收集全部事务的结果、通知事务管理器提交或者回滚事务。
在分布式事务中,事务管理器A会向参与事务的其他机器发出调用请求。其它机器拦截请求。获取事务ID,启动本地事务。其他机器同时启动本地资源管理器登记。执行两阶段提交协议。最后根据全部的结果。执行第二阶段是否提交和回滚。DTC管理分布式事务如图所示:
事务资源管理器会根据事物执行的实际情况和需求进行提升。最初的事务由LTM管理,这样能获得最好的性能;