【问题标题】:Calling two WCF services in one transaction. Both talk to the same database. Is MSDTC is the only option在一个事务中调用两个 WCF 服务。两者都与同一个数据库通信。 MSDTC 是唯一的选择吗
【发布时间】:2014-09-19 12:58:38
【问题描述】:

我有一个 WCF 服务 ServiceA。

这又必须调用两个单独的 WCF 服务 ServiceB 和 ServiceC,它们做两件不同的事情,但如果对 ServiceC 的调用失败,我想回滚 ServiceB 所做的事情。

我确实使用 TransactionScope 实现了它(我使用的是 EF 6.0)但是没有启用 MSDTC 它不起作用。有解决方法吗?我真的不想走 MSDTC 路线,因为我担心这会导致很多性能问题,并且网络管理员强烈反对。

【问题讨论】:

  • 嗯 - 您需要某种服务,但您不想使用提供它的标准组件。自己写?
  • 你使用什么数据库?版本?

标签: entity-framework wcf msdtc


【解决方案1】:

您想要的是分布式事务,因为您的事务包含跨边界参与者。据我所知,windows 平台中分布式事务的唯一解决方案是 MSDTC,没有办法解决这个问题。

不过,我建议您尝试寻求最终更一致的解决方案,而不是严格的事务性解决方案,因为您的解决方案很可能会表现得更好并且可扩展性更好。当然,您将不得不处理数据不一致的特殊情况,这将导致更复杂的代码。

根据我的经验,这是值得的,但这取决于你。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 2015-08-18
    相关资源
    最近更新 更多