Greg Wilkins是Jetty web容器的首要开发人员。他写了一篇blog,指出人们越来越需要在Servlet说明书中说明客户端和服务器端的异步通信。
这种需求是随着Ajax的流行而增长的,尤其是在“彗星风格”的交互中,客户端通常重新向服务器发送请求来允许后台用异步事件数据更新客户端。很多servlet容器正用自己的解决方案来满足这一需求,例如Jetty's Continuation机制。在他的blog中,Greg认为现在是说明书作者们聚在一起拿出统一意见的时候了,他还推荐了一种解决方案供参考。
他提出了下面一些用例:
无阻塞输入—当数据到达很慢,有能力在无阻塞情况下从客户端获取数据。这实际上并不是异步API的重要驱动,因为很多请求都在一个包中到达,或是直到首个内容包达到后才处理。此外,我希望servlet API能改进,这样应用程序就不用做任何IO了。
无阻塞输出—当客户端或网络缓慢时,有能力无阻塞地向客户端发送数据。尽管对异步输出的需求比异步输入更强烈,但我还是相信这不是一个重要的驱动。大缓存能够允许容器清空很多异步的响应。而对于更大的响应,它也可以更好的避免应用程序处理IO。
延迟请求处理— 彗星风格的Ajax web应用能够使请求处理延迟到过时或某事件发送后再处理。当远程/缓慢资源必须在服务请求前获得,或者当对特定资源的访问需要被放弃以避免太多的并发访问时,延迟请求处理也显得很有用。现在,唯一合适的选择是在servlet中等待,消耗一个线程和其它资源。
延迟响应关闭—彗星风格的Ajax web 应用能够要求响应开放,以允许额外数据在异步事件发生时被发送。现在,唯一合适的选择是在servlet中等待,消耗一个线程和其它资源。
100-Continue处理—客户端在发送请求前可能会请求服务器端的握手信息。如果可以从容器中自动发送,就能避免这种机制被人为的使用。如果应用程序能够决定是否需要发送一个100- Continue信息,那么异步API就能避免在与客户端的来回交互中消耗一个线程。
查看本文国际来源

一沙一世界 一花一天堂 掌中握無……

网络编程技术、多媒体技术、PC应用技术

| 我爱研发网 | 中电华信 | 阿里西西 | JAVA爱好者 | 北京英才网 | 全球大学查询网 |
| 中国人的网站导航 | 中国电脑论坛 | 信息产业部 | 新浪科技 | 搜狐IT | 信息产业部电子教育与考试中心 |
| IT世界网 | 软件项目交易网 | 中国软件交易网 | 国信培训网 | 亚远景科技 | ....[更多] |