Glassfish与服务器推送技术

系统 1076 0

“服务器推送技术”( Server Pushing )是最近 Web 技术中最热门的一个流行术语,它的别名叫“ Comet ”(彗星)。它是继“ Ajax ”之后又一个倍受追捧的 Web 技术。“服务器推送技术”最近的流行跟“ Ajax ”有着密切的关系。

 

 

随着 Web 技术的流行,越来越多的应用从原有的 C/S 的模式下转变为 B/S 的模式,享受着 Web 技 术所带来的各种优势(例如,跨平台,免客户端维护,跨越防火墙,扩展性好等等)。但是基于浏览器的应用,也有它不足的地方。最主要的地方在于界面的友好性 和交互性。由于游览器中的页面每次需要全部刷新才能从服务器端获得最新的数据或向服务器传送数据。这样产生的延迟所带来的视觉感观非常糟糕。因此很多的桌 面应用为了获得更友好的界面放弃了 Web 技术,或者采用浏览器的插件技术( ActiveX, Applet, Flash 等等)。但是浏览器插件技术本身又有许多问题,例如跨平台问题,和插件版本兼容性问题。

 

 随着 Ajax 技术的兴起,让广大开发人员又一次看到了使用浏览器来替代桌面应用的机会,并且这次机会非常大。 Ajax 将整个页面的刷新变成页面局部的刷新,并且数据的传送是以异步方式进行,这使得网络延迟带来的视觉差异将会消失。 Ajax 还利用 DHTML 和丰富的 Javascript 语言可以模拟桌面系统的各种事件产生和响应过程,以及平滑滚动和拖拽的效果。还不止这些,更有一些 IT 巨头( Google,Sun,Oracle 等)提供了非常丰富的 Ajax 开发工具,使得开发和调试 Ajax 应用变得简单高效,并且开发的 Ajax 应用还可以跨越各种浏览器和操作系统。在这种情况下基于 Ajax Web 应用迅速涌起,吞噬着原有桌面系统的份额。聊天工具,邮件阅读器,博客编辑器,甚至是 Office 办公软件和文字处理软件在浏览器中都有着美丽的外观和几乎可以与桌面系统媲美的交互界面。 Google 更是提出“有了浏览器和 Google ,就不需要微软”的口号和策略。在 Ajax 的世界中,除了传统的 CAD 设计软件和大型游戏软件等等因为对系统硬件的苛刻需求,还离不开桌面系统以外,似乎其他所有的应用都可以变成 Web 应用了。

 

 但 是,在浏览器中的Ajax应用中存在一个致命的缺陷无法满足传统桌面系统的需求。那就是“服务器发起的消息传递”(Server-Initiated Message Delivery)。在很多的应用当中,服务器软件需要向客户端主动发送消息或信息。因为服务器掌握着系统的主要资源,能够最先获得系统的状态变化和事件 的发生。当这些变化发生的时候,服务器需要主动的向客户端实时的发送消息。例如股票的变化。在传统的桌面系统这种需求没有任何问题,因为客户端和服务器之 间通常存在着持久的连接,这个连接可以双向传递各种数据。而基于HTTP协议的Web应用却不行。上节中也提到过,在Web世界中,服务器永远是被动的发 送数据,前提是客户端必须先发送请求。浏览器其实并不知道服务器的信息什么时候会有改变,为了模拟实时的交流,或者不想错过某些信息,只能通过 “Polling”的技术不断刷新页面来获得最新的数据。这种方式不但浪费服务器的资源(前文提过),最重要的是每次建立(或关闭)新的HTTP连接需要 一定的延迟,这种延迟使得频繁信息传递的应用无法忍受。于是就产生的“服务器推送技术”。

 

 

“服务器推送技术”在很久以前就出现过。例如Netscape曾经退出适用于Push技术的专用浏览器和经过修改的HTML语言。但是这仅仅在特定的浏览器中才能使用,其他流行的浏览器(IE等)就不兼容这种技术。

 

  现在的“服务器推送技术”是在保持原有的HTTP协议不变,在服务器端改变处理方式,使得服务器能够使用浏览器已经打开的HTTP连接,主动向浏览器发送 消息。这里关键的技术是要保持原有的HTTP连接不断。一旦拥有持久的连接,服务器就可以根据自己数据更新,随时的向客户端发送最新的信息。

 

 在 Glassfish中,Grizzly通过NIO的技术实现了异步请求服务(ARP),并在ARP之上扩展了服务器推送技术的实现,将其也命名为 “Comet”。因为使用了NIO,Grizzly才可以在保持HTTP连接的同时,并不会绑定固定的线程,使得Glassfish具有很好的扩展性,可 以很好的同时支持大量的Comet请求。

Glassfish与服务器推送技术


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论