ESB + WCF,通过多种服务进行交易

时间:2011-06-07 14:38:51

标签: wcf web-services esb

我有一个有代理的ESB(Aqualogic)。

此代理将调用3个不同的服务,我必须将这3个服务放在事务范围内......

ESB不支持交易...

有人知道任何解决方案吗?

1 个答案:

答案 0 :(得分:1)

我对Aqualogic并不熟悉,但总的来说我可以说你想做的事情非常非常困难。

如果Aqualogic使用MSMQ进行传输,那么您可以通过使用事务性队列来获得某种形式的事务支持。但那只是一个开始。

如果要将WCF服务与事务上下文集成,则需要设置对WS-Atomic协议的支持(请参阅http://msdn.microsoft.com/en-us/library/ms729784.aspxhttp://social.msdn.microsoft.com/Forums/en/wcf/thread/cae32545-6536-4631-b89f-54f55da62199)。这是一个严重的痛苦。

不仅要配置它,还要使用它。跨服务器使用WS-Atomic意味着您需要在所有计算机上激活MSDTC,并且这些MSDTC之间的协调非常缓慢且容易长时间超时。

最好不要期望在单个事务中运行所有内容,而是使用工作流来补偿操作的部分成功/部分失败。另请参阅http://msdn.microsoft.com/en-us/library/dd483319.aspx以获取示例。