【问题标题】:Grails - Servlet 3.0 Asynchronous Request ProcessingGrails - Servlet 3.0 异步请求处理
【发布时间】:2012-04-18 21:17:47
【问题描述】:

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

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

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

提前谢谢你。

【问题讨论】:

    标签: grails asynchronous controller httprequest servlet-3.0


    【解决方案1】:

    不,这是个坏主意。

    在控制器操作中,您收到一个请求,并希望尽快提供响应。您只能将异步用于可以延迟的事情。

    如果用户在您的网站上请求页面,您不能以空页面响应,然后执行推送以更新他的页面。我只会将此功能用于 AJAX 请求,甚至不会用于所有请求。你必须决定什么是异步运行有意义,什么不是。

    【讨论】:

    • 大多数流行的 Java Web 容器一次可以处理多个请求吗?也就是说,如果请求阻塞,是否会将所有未来请求放入队列中,直到原始请求完成?对我来说,这将是使用 ayncs 的主要原因:释放服务器。
    【解决方案2】:

    您应该阅读Asynchronous Request Handling 的 Grails 文档

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

    原因是异步/非阻塞响应,一个线程==一个请求==一个响应关系被破坏。容器可以保持客户端响应打开和激活,同时将线程返回容器处理另一个请求,提高可扩展性。

    希望这应该足够清楚,但如果有不清楚的地方请询问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-12
      • 1970-01-01
      • 2012-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      • 1970-01-01
      相关资源
      最近更新 更多