【问题标题】:Which is better in this case - sync or async web service?在这种情况下哪个更好 - 同步或异步 Web 服务?
【发布时间】:2010-01-20 22:32:58
【问题描述】:

我正在 Axis2 中设置一个 Web 服务,它的工作是获取一堆 XML 并将其放入队列中以供稍后处理。我了解通过在“调用”实例上使用“invokeNonBlocking”操作创建一个客户端来异步调用同步 Web 服务是可能的。 (参考http://onjava.com/pub/a/onjava/2005/07/27/axis2.html?page=4)

那么,我的问题是,在这种情况下使用异步 Web 服务有什么好处吗?这似乎是多余的,因为 1)客户端没有被阻塞,2)服务必须接受 xml 并将其写入队列,无论它是同步的还是异步的

【问题讨论】:

    标签: asynchronous service axis2 synchronous


    【解决方案1】:

    在我看来,异步是合适的方法。有几点需要考虑:

    1. 您是否有多个客户端在任何特定时刻访问此服务?
    2. 这个过程多久发生一次?

    实现异步方法确实需要更多的努力。但我保证,最终你会对结果更满意。一方面,您不必管理线程。您主要关心的可能只是队列中数据的波动性(即竞争/死锁条件)。

    【讨论】:

      【解决方案2】:

      “同步调用”似乎合适,我同意。

      如果来自客户端的请求不耗时,那么我也看不到使调用异步的优势。根据我对此处问题情况的了解,Web 服务将在未来某个时间针对请求执行其“处理”。

      相反,如果请求需要一个耗时的过程,那么异步调用将是合适的。

      【讨论】:

        【解决方案3】:

        在反复思考之后,我认为该服务应该是异步的。原因是它将数据写入队列的任务放在一个单独的线程中,从而减少了超时的机会。它使过程更加复杂,但是如果我可以避免超时,那么就必须完成。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-04-17
          • 2016-12-24
          • 2011-08-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-28
          相关资源
          最近更新 更多