反向Ajax是DWR 2.0中最大新特性。它赋予你从web服务器向浏览器异步的发送数据的能力。
网络的最初设计并不允许服务器向浏览器发起连接,所以从浏览器及时的获取数据是个棘手的问题。DWR 提供了3种方式来从浏览器推送数据或向浏览器推送数据:Piggyback,Polling和Comet。
轮询是该问题最明显的解决方案。该方案中浏览器每隔一个规则而频繁的时间段,就向服务器发起一次请求,比方说每3秒钟,来查看页面是否有改变。这就好像车后座上坐了个5岁的孩子,每隔几秒钟就问你“我们到了吗?”。
Comet (也即http长连接,服务器推送)允许服务器开始慢慢的响应浏览器请求的信息,并能按照服务器指定的计划进行持续的响应。想要了解Comet的更多信息,请参考:
通过piggyback的选项配置,当服务器有一个更新信息需要发送时,它会等到浏览器下次发起连接的时候,在浏览器期望获得的响应中,一并发送这些更新信息。
每一种方式都有自己的长处。轮询很简单便于实现,不过它却容易造成服务器负载过重。相反Comet则难于实现,但是服务器运行起来却轻松很多。Comet还有一个加分项就是它的低资源占用率 - 它不需要等待浏览器的下一次连接(意指不需要暂存很多数据 - 译者注)。轮询和comet都需要额外的网络连接,所以真正需要连接较少的是piggyback,但是它却有着非常高的资源占用率。
好消息是,DWR允许你使用所有这三种方式,只需要在配置中切换具体实现即可。
其实几乎没有Comet连接会永远存在下去;由于各种各样的原因,它会不定期的进行重新连接,Comet和轮询可以被视为两个极端,控制它们的是两个可自定义的参数 - 连接时间和连接断开时间。DWR可以对这些进行动态的管理从而帮助管理服务器负载。
当额外的负载被接受时,可以配置DWR使用Comet/Polling的次数,但是这需要更快的响应时间。这种模式被称作主动反向Ajax。DWR默认并不开启主动反向Ajax模式,只允许使用piggyback传输机制。
本网站也包含关于开始使用反向Ajax的信息,还有更多高级配置,以及如何在非web线程中跟浏览器进行交互。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务