前几天我在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
。
你有什么建议吗?
答案 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但不知道任何实现的状态。所以我不会说它不能做,但如果有可能,基于规范中涉及的公司,它将非常昂贵且非常复杂。