事务管理器负责协调多个部分间的工作并通过资源管理器提交工作。资源管理器负责处理可信赖,持续存储。取决于使用的资源和服务或应用跨越的边界,WCF将使用三个事务管理器中的一个来完成事务处理。轻量级事务管理器(LTM)用来在一个应用程序域中管理资源。核心事务管理器(KTM),仅仅存在于Vista 和Windows Server 2008 系统中,用来管理文件系统和注册表资源的事务。分布式事务管理器(DTC)用来管理跨程序,进程或者机器边界的事务。应用程序不控制具体使用哪一个事务管理器;WCF将会选择最合适的事务管理器并在没有应用程序干预的情况下按需要逐步扩大。
当通信在跨应用,进程或者机器边界中转换语义时,可能要用到这两种事务协议中的一个。OlexTx协议是一种
Windows下特定的二进制协议。它源于DTC非常适用于在一个内部网络中通信的情况。网络服务原子事务协议,或者简称为WS-AT,是一个也支持跨应用,进程和机器的标准协议。但是与OlexTx不同,WS-AT是独立于传输协议的可以再TCP,HTTP或者其他网络协议上流转。尽管应用程序不能选择使用哪一个资源管理器,它们却可以选择使用哪一种事务协议。
事实上你尽可以为特定的绑定确定事务协议: 那些支持会话的(事务要求会话),那些支持双向通信的(事务要求双工通信),那些没有与WS-*堆栈绑定的9(WS-*绑定总是使用WS-AT)。这些限制最后只有netTcpBinding和netNamedPipeBinding满足。对这些绑定的事务协议可以通过代码或配置文件确定。列表5.21显示了一个使用TCP绑定与WS-AT的配置文件,它可以在基于标准的(WS-AT),快速的(二进制),安全的(TCP)的因特网服务上进行事务流转。
列表5.21 在一个绑定中确定WS-AT
<bindings>
<netTcpBinding>
<binding name=”wsat” transactinFlow=”true” transactionProtocol=”WSAtomicTransactionOctober2004”/>
</netTcpBinding>
</bindings>