事务是软件应用程序中必不可少的一部分,而且它也是现在系统设计中最复杂的方面。在网络服务器构架中最大的不足之处之一就是事务。最初省略这部分的原因是因为事务定义的复杂性,这些定义不能跨越应用程序固有的内部界限。
现在,在这方面有了一定的进展,从而使得对网络服务器中事务的使用更方便了。在这篇文章中,我们将探讨一下WS-Transactions规范的第一部分,它的作用是为利用网络服务应用程序中的原子事务定义一个标准的方法。
WS-Transaction规范是WS-Coordination规范的一种逻辑扩展。同样的,WS-Transaction看作是WS-Coordination框架的一部分,同时也是通过两种协议来对WS-Coordination框架的一种表达方法,这两种协议是:原子事务(AT)和商务活动(BA)。
这里我们将纯粹的来着眼于AT协议。原子事务是典型的短生命周期事务,它只能在有限的信任域中执行。它们之所以被描述为原子的,是因为它们具有all-or-nothing这个性质,这意味着要么所有的操作全部成功,要么所有的操作失败并终止。
原子事务能定义关键任务进程,这些关键任务的成功执行要求有一系列的动作。这些动作并不是马上提交,而是在做出提交决定之前先暂时执行。事务协调器通过访问所有的事务参与者的投票来决定着一系列动作的结果。如果所有的参与者投票成功,那么所有的操作将被成功提交。
最后具讽刺意味的一点是,事务很难通过系统界限来进行表达定义,但恰恰事务对于存在上下联系的网络服务器又是特别的重要。但是,网络服务器优惠具有代表性的聚合来自同各公司中的多个系统的功能性。这就使得网络服务器能有效的利用原子事务。
我们有必要认识WS-Transaction规范并没有定义事务自身的表达式,但是我们可以使用XML,它定义了用于管理事务活动和结果的一个协议。
基于AT协议的目的,事务协调器在事务管理中发挥了重要作用。通过对WS-Coordination协议道具的扩展,AT协议通过定义特定的行为和消息,能起着定义协调“类型”的作用。
AT协议一种XSD模式,它的CoordinationType被设置为这个URL。
原子事务是在CoordinationContext中之行的,其中CoordinationContext能将所有的协调器封装给事务。
我们最好是认为每个物理应用服务器都有其自己的事务协调器,它负责注册进程的管理事务状态。而这台机器上的每个组件或是每个参与者则负责在原子事务中与协调器互动作用。
AT协议定义了提交协议的一个子集,这就是WS-Coordination协议:
网络服务器未有代表性的注册Completion协议,因为此协议通常会对商务逻辑进行初始化,并调用中间件的功能性来满足需求。
由于原子事务会锁定资源,而且如果没有受到提交通告,那么他会保持不提交状态,所以它不能满足通过英特网传播到不同系统的请求。
AT协议的目的是在应用程序中(其中包括Web服务器)为管理事务状态定义一个标准的XML格式。如果是根据AT协议来构建网络服务器的时候,请记住执行Web methods应该被认为是工作的第一步,也可以把它认为是初始的 CoordinationContext 的创建者。如果事务的上下联系没有脱离子系统的逻辑集合中的事务界限的话,我们认为超越了那点的事务管理是可行的。