Grails - Servlet 3.0异步请求处理

时间:2012-04-18 21:17:47

标签: grails asynchronous controller httprequest servlet-3.0

我今天发现了Servlet 3.0异步工具。我已经读过它并认为我理解了这个概念。

我想知道:这会对“标准”控制器的操作产生什么影响,还是应该保存用于使用Web服务或广泛的计算过程?

换句话说,在没有事先考虑动作方法的计算时间的情况下,将它用于所有控制器的动作是不是一个坏主意? 如果是的话,你能解释一下为什么吗?

提前谢谢你。

2 个答案:

答案 0 :(得分:2)

不,这不是一个坏主意。

在控制器操作上,您会收到一个请求,并希望尽快提供回复。您只能将异步用于可以延迟的事物。

如果用户在您的网站上请求页面,则无法使用空白页面进行回复,然后再按下以更新其页面。我只会将此功能用于AJAX请求,甚至不能用于所有这些功能。你必须决定什么是有意义的运行异步运行,什么不是。

答案 1 :(得分:1)

您应该阅读Asynchronous Request Handling

的Grails文档
  

通常,对于快速执行的控制器操作,异步处理请求几乎没有什么好处。但是,对于长时间运行的控制器操作,这是非常有益的。

     

原因是,通过异步/非阻塞响应,一个线程==一个请求==一个响应关系被破坏。容器可以使客户端响应保持打开和活动状态,同时将线程返回容器以处理另一个请求,从而提高可伸缩性。

希望这应该足够清楚,但请问是否有不明确的事情。