单个服务器端事务中的多个SOAP请求

时间:2013-12-17 08:23:06

标签: wcf web-services soap transactions

我正在寻找一个开箱即用的解决方案来获取围绕某些SOAP请求的仅服务器端事务。我明确没有寻找分布式事务或WS- *标准,因为它们改变了客户端的接口,我只需要它只是服务器端。

所以,对于客户来说:

webservice.StartTransaction(); // Or included in DoSomething(...)
webservice.DoSomething(Whatever);
webservice.DoSomethingElse();
webservice.CommitTransaction(); // Or included in DoSomethingElse()

在服务器上,必须在webservice.StartTransaction()处启动Transaction,并在webservice.CommitTransaction处提交。如果在某个有限的时间范围内没有提交,则事务应该回滚。

1 个答案:

答案 0 :(得分:0)

虽然您的要求并不完全清楚,但您可能需要考虑利用Web服务协调(WS-Coordination)和Web Service Atomic Transaction(WS-AtomicTransaction)。

WS-Coordination规范描述了一个可扩展的框架,用于提供协调分布式应用程序操作的协议。此类协调协议用于支持许多应用程序,包括那些需要就分布式活动的结果达成一致协议的应用程序。

http://docs.oasis-open.org/ws-tx/wstx-wsat-1.2-spec-os/wstx-wsat-1.2-spec-os.html

WS-AtomicTransaction规范提供了与WS-Coordination中描述的可扩展协调框架一起使用的Atomic Transaction协调​​类型的定义。该规范为原子事务协调类型定义了三种特定的协议协调协议:完成,易失性两阶段提交和持久的两阶段提交。在构建需要对具有all-or-nothing属性的短期分布式活动的结果进行一致协议的应用程序时,开发人员可以使用任何或所有这些协议。

https://www.oasis-open.org/committees/download.php/35161/wstx-wscoor-1%202-spec-os.pdf

基于Microsoft的示例: http://msdn.microsoft.com/en-us/library/ms752261(v=vs.110).aspx