Web端服务器推送技术原理分析及dwr框架简单的利用

打印 上一主题 下一主题

主题 547|帖子 547|积分 1641

a) 对服务器的压力并不会有明显的淘汰。
b) 实时性差,有肯定的耽误。
应用: 这是一项非常常见的技术,例如,大多数 webmail应用程序就是通过这种技术在电子邮件到达时表现电子邮件的。
2.3 Comet
Comet方式普通的说就是一种长连接机制(long lived http)。同样是由Browser端主动发起哀求,但是Server端以一种似乎非常慢的相应方式给出回答。如许在这个期间内,服务器端可以利用同一个connection把要更新的数据主动发送给Browser。因此哀求大概等待较长的时间,期间没有任何数据返回,但是一旦有了新的数据,它将立即被发送到客户机。Comet又有很多种实现方式,但是总的来说对Server端的负载都会有增长.虽然对于单位操作来说,每次只需要建议一次connection,但是由于connection是保持较长时间的,对于 server端的资源的占用要有所增长。
优点: 实时性好(消息延时小);性能好(能支持大量用户)
缺点: 长期占用连接,丧失了无状态高并发的特点。
应用: 股票体系、实时通讯。
2.4 Flash XML Socket
这种方案实现的底子是:一、Flash提供了 XMLSocket类。二、 JavaScript 和 Flash的紧密团结:在 JavaScript可以直接调用 Flash程序提供的接口。
缺点:
a) 因为XMLSocket没有HTTP隧道功能,XMLSocket类不能自动穿过防火墙;
b) 因为是利用套接口,需要设置一个通讯端口,防火墙、代理服务器也大概对非HTTP通道端口进行限定;
应用: 网络聊天室,网络互动游戏。
2.5 Java Applet 套接口
在客户端利用 Java Applet,通过 java.net.Socket或java.net.DatagramSocket或java.net.MulticastSocket 创建与服务器端的套接口连接,从而实现“服务器推送 ”。
缺点: 需要客户端安装 JAVA捏造机。
3 Comet 介绍
Comet 偶尔也称反向 Ajax或服务器端推技术(server-side push)。其头脑很简单:将数据直接从服务器推到浏览器,而不必等到浏览器哀求数据。听起来简单,但是假如熟悉Web 应用程序,尤其是HTTP协议,那么您就会知道,这绝不简单。实现Comet风格的 Web应用程序,同时包管在浏览器和服务器上的可伸缩性,这只是在近来几年才成为大概。现在一些主流网站都有类似的原理,例如:webQQ、开心网、校内等等,它们中消息动态都是接纳类似的技术,只是具体实现方式不一样。
COMET的英华就在于用服务器与javascript来维持浏览器的长连接,同时完成服务器端事件的浏览器端相应。如许的事件广播机制是跨网络的,同时也是实时的。
接纳了 Comet技术的服务器在客户机做出一个哀求后,和客户机创建一个永久的连接,然后服务器会根据客户机的哀求不断把数据包推向客户,这个推的过程是不中断的。由服务器推向客户机的数据在客户机的浏览器上会不断产生新的内容,而且不会产生Client pull那样的HTML文档头,从而大大淘汰了耽误的时间,向(服务器相应–客户机哀求)同步迈进了一步。
服务器推送通常效率要比客户端拖曳效率高,因为它不必为后续数据创建新的连接。由于始终保持连接,纵然没有数据传输时也是如许,因此服务器必须乐意分配这些TCP/IP端口,对于TCP/IP端口数有限的服务器这将是一个严重的标题。
客户端拖曳效率低,因为这必须每次为传送数据创建新的连接。但是它不必始终保持连接。在实际环境中,创建HTTP连接通常需要花费相称多的时间,多达一秒甚至更多。因此从性能上考虑,服务器推送对于最终用户更有吸引力,特殊是对于需要常常更新信息的环境下。
服务器推送相对客户端拖曳的另一点优势是,服务器推送相对比力容易控制。例如,服务器每一次推送时都保持一个连接,但它又随时可以关闭其中的任何连接,而不需要在服务器上设置特殊的算法。而客户端拖曳在同样的环境下要贫苦许多,它每次要与服务器创建连接,服务器为了处置惩罚将客户端拖曳哀求与特定的最终用户匹配等环境,需要利用相称贫苦的算法。
如上所述,在服务器推送中,多个相应中连接始终保持,使服务器可在任何时间发送更多的数据。一个明显的好处是服务器完全可以或许控制更新数据的时间和频率。另外,这种方法效率高,因为始终保持连接。缺点是保持连接状态会浪费服务器端的资源。服务器推送还比力容易停止。
4 Comet 实现(Java语言)
4.1 死循环法
最简单的自然是死循环法,假如利用观察者模式则可以进一步进步性能。
但是这种做法的缺点在于客户端哀求了这个 servlet后, web 服务器会开启一个线程实行 servlet 的代码,而 servlet 由迟迟不愿结束,造成该线程也无法被释放。于是乎,一个客户端一个线程,当客户端数量增长时,服务器依然会承受很大的负担。
4.2 改写web服务器
现在的趋势是从 web 服务器内部入手,用 nio ( JDK 1.4 提出的 java.nio 包)改写 request/response 的实现,再利用线程池增强服务器的资源利用率,从而解决这个标题,现在支持这一非 J2EE 官方技术的服务器有 Glassfish 和 Jetty 。
JDK 1.4 版本 ( 包罗之后的版本 ) 最显著的新特性就是增长了 NIO(New IO) ,可以或许以非壅闭的方式处置惩罚网络的哀求,这就使得在 Java 中只需要少量的线程就能处置惩罚大量的并发哀求了。
Jetty 6筹划来处置惩罚大量并发连接,它利用Java语言的不堵塞 I/O(java.nio)库并且利用优化的输出缓冲架构。Jetty也有一个处置惩罚长连接的杀手锏:一个称为 Continuations的特性。
Grizzly 作为 GlassFish 中非常重要的一个项目,就是用 NIO 的技术来实现应用服务器中的高性能纯 Java 的 HTTP 引擎。 Grizzly 还是一个独立于 GlassFish 的框架结构,可以单独用来扩展和构建本身的服务器软件。
特点: 利用 NIO 不是一件简单的技术,它的一些特点使得编程的模型比原来壅闭的方式更为复杂。
4.3 利用框架
基于 Java 的成熟的服务器推送框架有 DWR 。
DWR是一个开放源码的利用Apache允许协议的解决方案,它包含服务器端Java库、一个 DWR servlet以及 JavaScript库。虽然 DWR不是 Java平台上唯一可用的Ajax-RPC 工具包,但是它是最成熟的,而且提供了许多有效的功能。从最简单的角度来说,DWR是一个引擎,可以把服务器端Java对象的方法公开给JavaScript 代码。利用DWR 可以有效地从应用程序代码中把Ajax的全部哀求 -相应循环消除掉。这意味着客户端代码再也不需要直接处置惩罚XMLHttpRequest对象大概服务器的相应。不再需要编写对象的序列化代码大概利用第三方工具才能把对象变成XML。甚至不再需要编写servlet代码把 Ajax哀求调整成对 Java域对象的调用。
DWR 从 2.0开始增长了 push 功能 , 也就是在异步传输的环境下可以从 Web-Server 端发送数据到 Browser
自我介绍一下,小编13年上海交大结业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里不停到如今。
深知大多数前端工程师,想要提拔技能,往往是本身探索成长大概是报班学习,但对于培训机构动则几千的学费,着实压力不小。本身不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开辟全套学习资料》,初衷也很简单,就是渴望可以或许帮助到想自学提拔又不知道该从何学起的朋侪,同时减轻各人的负担。


既有适合小白学习的零底子资料,也有适合3年以上经验的小伙伴深入学习提拔的进阶课程,根本涵盖了95%以上前端开辟知识点,真正体系化!

由于文件比力大,这里只是将部分目次截图出来,每个节点里面都包含大厂面经、学习笔记、源码课本、实战项目、讲解视频,并且会持续更新!
假如你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
末了

由于篇幅限定,pdf文档的详解资料太全面,细节内容着实太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+点击【学习资料】即可领取!


点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+点击【学习资料】即可领取!
[外链图片转存中…(img-oZTb9xVd-1712990815201)]
[外链图片转存中…(img-LAEeo2yz-1712990815201)]

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万有斥力

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表