代码改变世界

WCF 第五章 行为 事务之选择一个事务协议-OleTx 或者WS-AT

  DanielWise  阅读(692)  评论(0编辑  收藏  举报

事务管理器负责协调多个部分间的工作并通过资源管理器提交工作。资源管理器负责处理可信赖,持续存储。取决于使用的资源和服务或应用跨越的边界,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>

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示