Web服务和事务性保证

问题描述 投票:1回答:1

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

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

这个问题是否只能在业务层解决(例如查询以前的调用状态),或者您是否了解一些可以帮助在Web服务中包含事务保证的好框架/最佳实践?

web-services transactions integration eai
1个回答
1
投票

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

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

我能想到的另一个选择是如果你正在使用SOAP,你可以进行异步通信并寻找一些实现WS-Coordination, WS-AtomicTransaction and WS-BusinessActivity规范的堆栈,然后自己决定它是否适合你的环境。例如,我认为Axis2 supports these,但当然最终它取决于您使用的技术和堆栈。

从上面的文章:

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

以下是它实现的两阶段提交的类型。

2PC types supported by WS-AtomicTransaction

希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.