RSS订阅
RSS订阅TT SOA

Comet:从服务器端实现数据流的Reverse Ajax

2008-2-22  选择字号:  | |
打印本文章

导读:Comet,即Reverse-Ajax,一种从服务器端到浏览器实现数据流的技术,为基于实时事件的数据服务提供了新的发展前景。

关键词:Ajax Comet reverse Ajax,数据服务

正在加载数据... 【TechTarget中国原创】

【TechTarget中国原创】Ajax,全称Asynchronous JavaScript+XML,在Web应用领域已经家喻户晓。在这种机制下,不需要页面重载,浏览器就获取RESTful Web服务并更新GUI。这种开发方法已经从网上地图和日历的创新起源,扩展为多数新Web应用的标准功能。但是,直到最近,出现一个与该方法互补的新名词,目前它通常被称为Reverse-Ajax (反向Ajax),即Comet。

  为了理解为什么需要像reverse-Ajax或Comet的东西,就得先看一下实时事件的本质,例如那些发生在股票市场或运动比赛的实时事件。假设你负责用Ajax创建一个不能全屏重载、基于Web的应用,运用在之前提到的场景中,你会使用多长的时间间隔,向你的数据服务发送新的异步请求?记住,你不想用户错过比赛中的任何新动作,或者更糟的是,错过股票报价而无法下单。

  这种类型的设计没有简单的答案,如果你使用的间隔太久,用户可能错过新的信息,但如果你使用的间隔太短,那么你的数据服务将被大量无用的请求给淹没。这个问题的核心当然是Web应用的无状态本质。不过,对此难题有一个解决办法,那就是服务器通知客户端有新的数据,这也被经常叫做服务器端推(serverside push)。

  对于那些始于富客户端(rich-client)的技术,如Flash或Java,这个过程可能是老调重弹,特别是因为这些技术已经集成如远程和流程的机制来处理异步请求。这些请求既可以从客户端到服务器端,也可以从服务器端到客户端。但是,Comet所做的就是使用和Ajax一样的技术(具体而言,就是JavaScript和HTML),处理实时响应这个过程。现在让我们看看这个设计需要如何处理。

  首先你需要了解,服务器端的数据服务设计,需要代表浏览器客户端来保留状态。这个过程可能非常困难,也可能非常容易,这要视你使用的平台和语言而定。这样,我们再次回到Web应用无状态的本质问题。浏览器需要不断识别自身的方法,或者通过cookies,或者通过session ID,或者类似好莱坞的规则“不要打电话给我们,我们会打电话给你”。这是指只有浏览器能够提出请求,而不能反之亦然。

  创建异步服务器应用中,我们面临的最后一个问题是基于HTTP的事件路由总线,换言之,服务器端有一个潜在的应用程序能够记录希望收到更新的客户端。这种设计很像运用于基于出版/订阅渠道的企业系统里的消息系统。

  但是,由于最后的机制与多数Web平台使用的基本方式背道而驰,所以,这也是为什么目前Comet的应用依赖定制修改的应用服务器,或者嵌入版本来处置这些问题的最大原因。在使用Java的情况下,Jetty和Grizzly是目前能够支持Comet类型设计的两种服务器,还可以支持其他语言,如Python,同时也支持其他流行的Java服务器,如Tomcat。这种支持技术上叫做“连续支持”(continuation support),这样,应用程序与Web的无状态本质相分离。连续支持也是使用Smalltalk和Lisp编写的更高水平的Web framework引以为豪的特点。

  如果把注意力转向客户端,一个浏览器能够采用不同的方式与这种服务器应用程序保持联系。这些方式包括long-polling,动态脚本标签和包括使用IFrames的工作区。这些都还不是标准的方式,这也是为什么许多客户端Comet设计依赖framework的使用,抽象化浏览器部署之间存在的不兼容性。与Ajax相似,使用像Dojo的 framework,其本身现在就同时作为Ajax和Comet的framework在使用。

  事实上,在后面那种情况下,已经有标准在制定中,例如HTML 5。这是通过一种叫event-source的简单标签,来部署和支持Comet类型的负载,在这种情况下,减少了为显示Comet发出的数据对framework和分段方式的需求。

  Comet提供的服务是当服务器端有数据时,就传送数据给浏览器。显然这种技术将具有和Ajax一样的影响,并与Ajax相得益彰。

还没有登录? 阅读全文请先登录或注册
用户名:(请填写您的E-mail做为登录账号)
  • 获取最新的IT业界资讯、市场动态、行业趋势等独家原创内容。
  • 分享国内外技术专业人士提供的技巧经验。
  • 利用专注IT的技术资源中心,不断更新专业知识。
  • 享受白皮书、Webcast等系列特色增值服务。
  • 免费参加TT中国举办的各种会员活动。
  • 更多的精彩服务,在不断开发中……
用户名:(请填写您的E-mail)
密 码:
 永久登录
请输入您的登录email:
2008年的SaaS(软件即服务)可谓是威风八面,不仅是SaaS,与SaaS相类似的PaaS(平台即服务)、云计算等名词纷纷扑面而来,概念被炒得一片火热……
关于SOA应该自上而下还是自下而上的实施存在着许多不同的原则,阐述不同的观点。不管你的看法如何,关键是你应该以从事任何战略项目的途径去发起SOA倡议,建立总体治理……
当今,各个企业都在想方设法提高自己的生产效率,并且对IT资产的重组也都在努力的探索当中。借助于面向服务的架构(SOA)技术,IT组织已经在克服这些问题方面取得了……
有效结合Ajax技术和SOA并进一步实现的丰富企业级应用产品能够直接赋能于最终用户,让其掌握强大的功能。之所以能出现这种情况的原因在于,REA应用会更多的与潜在……
我发现很难确定Web 2.0供应商之间的分歧。似乎他们在其营销时都使用相同的buzzwords:Ajax,Web 2.0,RIA,mashups。在这个空间是否有任何特定的产品分类……
虚拟化和SOA之间是一种间接的、相辅相成的关系。也许在IT及业务转型中,两者的结合使用会发挥最大的优势。虚拟化有助于更快地显示部署基础设施的投资回报率(ROI)。
云计算的概念越来越流行,Amazon、Google和IBM是第一批将云计算引入公众视线的公司。云计算就是新的Web2.0,一种既有技术上的市场绽放。
安全对于许多的IT部门来说都是一个重要的问题之一,但是SOA安全问题完全是在另一个新的纬度上了。对于SOA为一个机构所带来的许多的好处,例如具有在许多不同的提供者和供应商的情况下混合和匹配服务。
最新更新
专家答疑
技巧
Ron Schmelzer,Jason Bloomberg
你认为通过遵循IT组织步骤可以演变为SOA吗?ZapThink公司明确SOA实行肯定是一个挑战——也不应被视为这一倡议应得到执行的一个步骤就是整个企业的基础……
Dana Gardner
您能解释什么是“私有云”吗,能否举例说明?这是供应商需要建立的基础吗?作为托管服务供应商和服务供应商寻求最有效和最强大的基础设施,作为他们的“云”支持能力……
Andrew Pollack
我们正在寻找一种从主机选择SOAP服务器的请求。我们希望制造一个远程程序呼叫(RPC)从CICS程序的SOAP服务器,其中进程请求,使错误或成功后的反应……