在 WCF 中我使用同步调用。
在响应中,连接断开。对于发送者来说这是可以的,他会遇到一些异常并且可以回滚他的操作。 但接收器怎么了?他成功地采取了有关网络调用的行动,但他不知道发送者的事情,接收者使他的工作不好[因为异常]。 接收方是否有可能检测到响应中发生了错误?
我需要一种模式来确保双方都正确了解服务调用的状态。 (背景是两个系统都有状态机,其中一个系统的更改也必须在另一个系统中实现,或者如果其中一个系统发生错误 - 听起来像分布式事务)
最佳答案
您应该考虑将所有服务操作纳入分布式事务中。
这将确保您在操作失败时,事务会跨服务边界回滚。因此,如果您在客户端回滚事务,它也会在服务器上自动回滚(反之亦然)。
创业文章:
虽然这看起来是一件很难掌握的事情,但它是非常值得付出努力的。它将大大简化您的错误处理逻辑。
注意:由于 WCF 事务实际上是 native 分布式事务(由 MSDTC 管理),您将从中获得额外的 yield 。这些事务将(可选)传播到 SQL Server(如果您使用 SQL Server),并且所有数据库操作将与您的服务操作位于同一事务中。
关于c# - WCF - 检测响应中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11202196/