在一个事务中调用两个WCF服务。两者都与同一个数据库交谈。 MSDTC是唯一的选择
我有一个WCF服务ServiceA。在一个事务中调用两个WCF服务。两者都与同一个数据库交谈。 MSDTC是唯一的选择
这反过来又必须调用两个单独的WCF服务ServiceB和ServiceC来完成两个不同的事情,但是如果对ServiceC的调用失败,我想回滚ServiceB所做的。
我没有实现它使用TransactionScope(我正在使用EF 6.0),但没有启用MSDTC它不起作用。有没有解决方法?我真的不想通过MSDTC路线,因为我担心会导致很多性能问题,并且网络管理员强烈反对。
回答:
你想要的是一个分布式事务,因为你的事务包含跨界参与者。就我所知,Windows平台上分布式事务的唯一解决方案是MSDTC,但是没有办法解决这个问题。
但是,我会建议您尝试寻求更为一致的解决方案,而不是严格的事务性解决方案,因为您的解决方案很可能会更好地执行和扩展。当然,您将不得不面对数据不一致的特殊情况,这会导致更复杂的代码。
从我的经验来看,这将是值得的,但它取决于你。
以上是 在一个事务中调用两个WCF服务。两者都与同一个数据库交谈。 MSDTC是唯一的选择 的全部内容, 来源链接: utcz.com/qa/257616.html