soa - 如何处理长时间运行的 Web 服务操作?

标签 soa

我必须创建一个 Java EE 应用程序,它将大型文档转换为不同的格式。每次转换需要 10 秒到 2 分钟。
SOAP 请求将来自我也必须创建的客户端应用程序。

处理这些长时间运行的请求的最佳方法是什么?显然,在没有给用户任何反馈的情况下,该过程需要很长时间才能运行。

我可以想到以下方法来提供某种反馈,但我不确定是否有更好的方法,也许是标准化的方法。

  • 客户端执行来自线程的请求,服务器在响应中发送文档,这可能需要几分钟时间。在此之前,客户端会显示“请稍候”消息、进度微调器等(这似乎很容易实现。)
  • 客户端发送“开始转换”命令。服务器返回某种作业 ID,客户端可以使用它来频繁轮询状态更新或最终文档。 (这似乎是用户友好的,因为我可以显示进度,但也要求服务器是有状态的。)
  • 客户端发送“开始转换”命令。服务器以某种方式在完成后通知客户端。 (这里我什至不知道该怎么做)

  • 还有其他方法吗?哪一个在性能、稳定性、容错性、用户友好性等方面最好?

    谢谢您的回答。

    最佳答案

    由于这几乎全部在服务器端完成,因此除了以某种方式轮询服务器以获取状态更新之外,客户端无能为力。

    #1 没问题,但用户很快就会变得不耐烦。 “几分钟”对大多数人来说有点太长了。你需要 HTTP Streaming实现#3,但我认为这是矫枉过正。

    我会选择#2。

    关于soa - 如何处理长时间运行的 Web 服务操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3378756/

    相关文章:

    java - Spring-ws 或 Axis2 或其他用于 WS 的 "Contract-First"方法

    web-services - SaaS、SOA 和 Web 服务

    wcf - 设计 WCF 数据契约和操作

    java - 在没有客户端调用的网络服务中,我可以发送文件并执行一些操作吗?

    c# - 使用 msmq 队列对服务进行负载平衡?

    .net - 远程 UI 是否应该使用 SOA 来实现?

    wcf - 用于开发 WCF 应用程序的模型

    rest - 支持 RESTful 服务 - 我应该使用 Pragma、Cookie、自定义 header 还是其他东西来识别客户端 session 和事务?

    c# - 如何向非技术人员推广 WCF?

    architecture - 面向服务的架构与微服务