使用 WCF 的分布式事务

Distributed Transaction using WCF

我们有一个非常具体的场景需求,在WCF服务中实现分布式事务。场景如下:

  1. 客户端调用 WCF 服务
  2. WCF 服务更新 SQL 服务器中的数据
  3. 它调用一个基于外部 Java 的 Web 服务,该服务负责更新 DB2 数据库中的相同数据

如果在上述场景中出现任何失败,则必须回滚整个事务。我们如何为上述场景启用分布式事务。在这方面的任何投入都会有所帮助。我了解分布式事务会导致无数问题。但是,我想知道上述问题的潜在解决方案。

我会使用 SQL 交易。使用事务插入 SQL 数据库。调用提交后,我会从 WCF 调用基于 java 的 Web 服务,如果它 returns 在更新 DB2 数据库时出现异常,我将回滚 SQL 事务。下面的link应该对你有帮助。

MSDN: SqlConnection.BeginTransaction