4. Web服务事务
现在SOA火的一塌糊涂。而作为SOA基石之一的Web服务业早就深入人心。那么在处处都是服务的时候,如何保证服务之间交互的事务性也是必须要解决的问题。
和CORBA的OTS、J2EEE的JTA/JTS一样,Web服务也搞了一套自己的事务解决方案。目前,Web服务的事务是由WS-Coordination和WS-Transaction两个规范构成。WS-Coordination中提出了一套WS-Coordination Framework来定义了在Web服务的场景下如何确定事务边界、如何开始和提交事务(这其实也就是定义了JTA,但JTA中的XA部分则是放在WS-Trsansaction中定义的)。同时考虑到Web服务的特性,在很多场景下传统的分布式事务(XA)是不能满足长时间运行的事务的需求的,因此Web服务事务在WS-Transaction规范中提供了两类提交协议:WS-AT和WS-BA。前者是经典的分布式事务,后者则是为了长事务而提出的,主要是利用了补偿的概念。
这两个协议具体是如何运作的细节可以参考Web Service Transaction链接。该文章通过一个例子非常详细的描述了一个Web服务事务的运作过程,详细列出了其中交互的Web服务事务的SOAP消息,非常值得学习。
结束语:
漫谈就此结束,但如果只是草草的把各种标准、规范、协议过一遍,相信看过后也就大概知道些历史,具体的实现还是远在十万八千里。所以计划后续还是会陆续补上其他深入一些的文章,比如说具体分析一个开源的事务管理器是如何实现的、WebSphere Process Server中的SCA组件的事务又是如何运作的等等,争取能比较全面的覆盖事务的方方面面。