网络服务和交易担保

时间:2019-03-27 13:45:38

标签: web-services transactions integration eai

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

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

可以仅在业务层解决此问题(例如查询先前的呼叫状态),还是您知道一些有助于将交易保证包装在Web服务周围的好的框架/最佳实践?

1 个答案:

答案 0 :(得分:1)

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

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

我可以想到的另一种选择是,如果您使用的是SOAP,则可以进行异步通信并寻找一些实现WS-Coordination, WS-AtomicTransaction and WS-BusinessActivity规范的堆栈,然后自己决定这是否是一个好主意。你的背景与否。例如,我认为Axis2 supports these,但最终当然取决于您使用的技术和堆栈。

从上面的文章:

  

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

下面是其实现的两阶段提交类型。

2PC types supported by WS-AtomicTransaction

希望这会有所帮助!