代码之家  ›  专栏  ›  技术社区  ›  Jack BeNimble

在这种情况下,同步或异步web服务哪个更好?

  •  3
  • Jack BeNimble  · 技术社区  · 14 年前

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

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

    3 回复  |  直到 14 年前
        1
  •  1
  •   IAbstract    14 年前

    在我看来,异步是正确的方法。有几件事需要考虑:

    1. 这个过程多久发生一次?

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

        2
  •  0
  •   jldupont    14 年前

    我同意,“同步呼叫”似乎是合适的。

    如果来自客户机的请求并不耗时,那么我也看不到异步调用的优势。根据我对这里所讨论的情况的理解,web服务将在将来的某个时候对请求执行“处理”。

        3
  •  0
  •   Jack BeNimble    14 年前

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