1

您如何通过 Web 服务集成应用程序并处理技术错误,例如更改状态的 Web 服务调用的连接错误?

例如,当网络连接在 Web 服务调用期间中断时,客户端如何知道 Web 服务是否已处理其操作?

能否仅在业务层解决此问题(例如查询以前的调用状态),或者您是否知道一些很好的框架/最佳实践可以帮助围绕 Web 服务包装事务保证?

4

1 回答 1

1

使用在业务层中跟踪的某种事务上下文自行实现这一切始终是一种选择。您可以使用一些补偿机制来确保在需要时回滚事务,但您需要:

  • 将交易信息保存在某处
  • 使用事务相关 ID,因此您可以在响应丢失时进行查询(无论如何,拥有相关 ID 是个好主意)
  • 实现读/写/回滚等所需的操作,因此可能会使您的服务更复杂一些

我能想到的另一个选择是,如果您正在使用SOAP,您可以进行异步通信并寻找一些实现WS-Coordination、WS-AtomicTransaction 和 WS-BusinessActivity规范的堆栈,然后自行决定在您的上下文中这是否是个好主意或不。例如,我认为Axis2 支持这些,但当然最终它取决于您使用的技术和堆栈。

从上面的文章:

WS-AtomicTransaction 定义了一种协调类型,该类型对于处理系统生成的异常(例如不完整的写入操作或进程异常终止)最有用。

以下是它实现的 2-Phase Commit 的类型。

WS-AtomicTransaction 支持的 2PC 类型

希望这可以帮助!

于 2019-03-28T09:14:28.233 回答