2010-01-20 49 views
3

我在Axis2中设置了一个Web服务,它的任务是获取一堆XML并将其放入稍后处理的队列中。我知道可以通过在“Call”实例上创建一个使用“invokeNonBlocking”操作来设置客户端来异步调用同步Web服务。 (REF http://onjava.com/pub/a/onjava/2005/07/27/axis2.html?page=4在这种情况下哪个更好 - 同步或异步Web服务?

所以,我的问题是,是否有任何优势,在这种情况下使用异步Web服务?这似乎是多余的,因为:1)客户端不堵塞; 2)服务必须接受和写入无论XML来排队,如果它是同步或异步

回答

0

A“同步调用”似乎是恰当的,我同意。

如果来自客户端的请求是不费时,那么我没有看到无论是在使异步调用的好处。根据我对此处所述情况的理解,Web服务将在未来一段时间内针对请求执行“处理”。

如果相反,则请求就需要一个耗时的过程,那么异步调用会避风港是适当的。

0

反刍一些关于它之后,我在想,服务应该是异步的。原因在于它会将数据写入队列的任务放入单独的线程中,从而减少超时的可能性。它使得这个过程变得更加复杂,但是如果我能避免超时,那就必须完成。

1

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

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

它确实需要实现异步方法更多的努力。但我保证,最终你会对结果感到高兴。首先,你不必管理线程。您的主要担心可能是数据在队列中的波动(即比赛/死锁状况)。