围绕多个Web服务调用是否有任何交易?

时间:2011-04-04 18:56:24

标签: asp.net transactions

前几天我在stackoverflow和ASP.net论坛上问过这个问题。 我得到的答案是“不,这是不可能的。交易不能超越网络服务的界限” Are there any transactions around multiple webservice calls?

但是在ASP.net论坛中我得到了以下答案: http://jalpesh.blogspot.com/2010/05/using-transactions-with-linq-to-sql.html  它提供system.transaction。 你有什么建议吗?

2 个答案:

答案 0 :(得分:1)

  

周围是否有任何交易   多个webservice调用?

上述问题的答案是,在一般情况下,可能让不同的Web服务参与同一事务。为此,您将使用行业标准WS-Transaction,它是WS-Coordination规范的一部分。感兴趣的规范是WS-Atomic Transaction (WSAT)

如果您在Microsoft堆栈上运行并且在所有计算机之间正确配置了MSDTC,则可以在Web服务之间传递事务(请参阅Propagating a Transaction Across AppDomains

所以,答案是肯定的,一般来说是可能的。但是,如果您正在谈论围绕任意第三方服务合并交易(因为您之前的问题似乎是关于)那么可能是不可能的,因为很可能这些第三方服务不支持WSAT(和我不怪他们!)。

不幸的是,在这些情况下,如果发生故障,您可以期望的最佳方法是执行补偿操作。

答案 1 :(得分:0)

LINQ to SQL实际上与围绕Web服务调用的事务无关。

我记得读过这个:http://en.wikipedia.org/wiki/WS-Transaction但不知道任何实现的状态。所以我不会说它不能做,但如果有可能,基于规范中涉及的公司,它将非常昂贵且非常复杂。