解析RIA和AJAX的不同(1)(2)
AJAX简介
作为J2EE开发人员,我们似乎经常关注“后端机制(backend mechanics)”。我们通常会忘记,J2EE的主要成功之处在Web应用程序方面;许多原因使得人们喜欢利用Web开发应用程序,但主要还是因为其易于部署的特点允许站点以尽可能低的成本拥有上百万的用户。遗憾的是,在过去几年中,我们在后端投入了太多的时间,而在使我们的Web用户界面对用户自然和响应灵敏方面却投入不足。
Ajax,使用它可以构建更为动态和响应更灵敏的Web应用程序。该方法的关键在于对浏览器端的JavaScript、DHTML和与服务器异步通信的组合。
利用一个Ajax框架(指DWR)构造一个应用程序,它直接从浏览器与后端服务进行通信。如果使用得当,这种强大的力量可以使应用程序更加自然和响应灵敏,从而提升用户的浏览体验。
术语Ajax用来描述一组技术,它使浏览器可以为用户提供更为自然的浏览体验。在Ajax之前,Web站点强制用户进入提交/等待/重新显示范例,用户的动作总是与服务器的“思考时间”同步。Ajax提供与服务器异步通信的能力,从而使用户从请求/响应的循环中解脱出来。借助于Ajax,可以在用户单击按钮时,使用JavaScript和DHTML立即更新UI,并向服务器发出异步请求,以执行更新或查询数据库。当请求返回时,就可以使用JavaScript和CSS来相应地更新UI,而不是刷新整个页面。最重要的是,用户甚至不知道浏览器正在与服务器通信:Web站点看起来是即时响应的。
虽然Ajax所需的基础架构已经出现了一段时间,但直到最近异步请求的真正威力才得到利用。能够拥有一个响应极其灵敏的Web站点确实激动人心,因为它最终允许开发人员和设计人员使用标准的HTML/CSS/JavaScript堆栈创建“桌面风格的(desktop-like)”可用性。
通常,在J2EE中,开发人员过于关注服务和持久性层的开发,以至于用户界面的可用性已经落后。在一个典型的J2EE开发周期中,常常会听到这样的话,“我们没有可投入UI的时间”或“不能用HTML实现”。但是,以下Web站点证明,这些理由再也站不住脚了:
BackPack
Google Suggest
Google Maps
PalmSphere
所有这些Web站点都告诉我们,Web应用程序不必完全依赖于从服务器重新载入页面来向用户呈现更改。一切似乎就在瞬间发生。简而言之,在涉及到用户界面的响应灵敏度时,基准设得更高了。
定义Ajax
Adaptive Path公司的Jesse James Garrett这样定义Ajax:
Ajax不是一种技术。实际上,它由几种蓬勃发展的技术以新的强大方式组合而成。Ajax包含:
基于XHTML和CSS标准的表示;
使用Document Object Model进行动态显示和交互;
使用XMLHttpRequest与服务器进行异步通信;
使用JavaScript绑定一切。
这非常好,但为什么要以Ajax命名呢?其实术语Ajax是由Jesse James Garrett创造的,他说它是“Asynchronous JavaScript + XML的简写”。
Ajax的工作原理
Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。
在创建Web站点时,在客户端执行屏幕更新为用户提供了很大的灵活性。下面是使用Ajax可以完成的功能:
动态更新购物车的物品总数,无需用户单击Update并等待服务器重新发送整个页面。
提升站点的性能,这是通过减少从服务器下载的数据量而实现的。例如,在Amazon的购物车页面,当更新篮子中的一项物品的数量时,会重新载入整个页面,这必须下载32K的数据。如果使用Ajax计算新的总量,服务器只会返回新的总量值,因此所需的带宽仅为原来的百分之一。
消除了每次用户输入时的页面刷新。例如,在Ajax中,如果用户在分页列表上单击Next,则服务器数据只刷新列表而不是整个页面。
直接编辑表格数据,而不是要求用户导航到新的页面来编辑数据。对于Ajax,当用户单击Edit时,可以将静态表格刷新为内容可编辑的表格。用户单击Done之后,就可以发出一个Ajax请求来更新服务器,并刷新表格,使其包含静态、只读的数据。
一切皆有可能!但愿它能够激发您开始开发自己的基于Ajax的站点。然而,在开始之前,让我们介绍一个现有的Web站点,它遵循传统的提交/等待/重新显示的范例,我们还将讨论Ajax如何提升用户体验。
RIA与AJAX
位于尤他州Midvale的Burton Group公司的高级分析师Richard Monson-Haefel认为,当提到被大肆宣传的富互联网应用(Rich Internet Application ,RIA)技术时,更少的才是更好的。这种技术能够大大促进用户的Web体验,因为不必再从服务器刷新页面,Ajax的风格是单页面接口。但他在最近关于 Ajax的电视短片中说过度使用会导致导航困难。
他说,Ajax比起其它RIA技术的主要优点是无缝与HTML集成,因此它可以大量使用而不需要改变现有Web内容。“把它想象成Web站点的调料。这样做的风险非常小。Ajax还是后台无关且不需要任何插件。与其它RIA技术,例如 Macromedia的Flash等联合使用,Ajax会是一个强大的工具。”
但是,该技术还没有成熟,而且工具和框架还没有得到支持。Monson-Haefel说:“如果你不喜欢用工具集和类库,Ajax就不适合你。”
Burton Group定义“富”互联网应用是能够在标准HTML框架和链接之上提供功能的。Google Maps就是这样一个优秀的Ajax例子。
与Ajax最近被才提出不同,JavaScript已经存在很久了。它基于JavaScript/ECMAScript,、级联样式表、文档对象模型以及XML HTTP请求。最初,很难跨越不同浏览器来设计Ajax风格的应用程序。但现在,主流浏览器已经演变到支持微软技术的实现了,并成为了最普通的特征。
今天,占主导地位的RIA技术是Macromedia的Flash/Flex。其它RIA技术包括为Microsoft Windows Presentation Foundation开发的用户接口标记语言,称为XAML(Extensible Application Markup Language,可扩展应用程序标记语言)。还有Mozilla的基于XML的用户接口语言XUL,droplets和Java applets以及微软将要推出的Windows Presentation Foundation/Everywhere (WPF/E)。
Monson-Haefe说:“Flash是很好的技术,适合于丰富动画与图形,但Flash好象是一个小池塘中的大鱼。现实市场现在还没有那么大,因此随着市场变大它是否能占领市场还是一个疑问。而微软将推出的WPF/E会是一个有力的竞争者。”
微软还计划推出一个Ajax框架扩展,称为Atlas。Monson-Haefel认为它非常有前途。他说,Ajax的其它集成开发环境还没成为主流。这包括Morfik Technology公司的Javascript Synthsis Technology (JST)、JetBrains公司的IntelliJ IDEA 5.0、Tibco Software公司的Tibco General Interface (GI)、JackBe公司的Visual GUI Builder、Backbase B.V.公司的Backbase以及开源的Ruby on Rails框架。
他说:“它已经内建了Ajax功能,使你能够用Ruby编程语言编写Ajax应用程序。”
Monson-Haefel说:“用于编写Ajax应用的Tibco工具非常好。JackBe也是相当好的RIA技术而Backbase或许是现在更好的一个。IDE的优点就是所见即所得的开发方式,但你购买了他们的GUI,这样你也受到观感上的束缚。”
除了IDE和框架扩展,Monson-Haefel还提到可用的Ajax UI工具和远程工具还有很多,包括私有的和开源的产品。他说,只有一部分。根据Burton Group公司最近的一项调查,在488位Ajax开发人员中,最流行的工具集、类库和框架扩展是有MIT风格证书的JavaScript框架―― Prototype,JavaScript 类库――Script.aclo.us,有Apache 2.0证书的Direct Web Remoting,有Academic Free License v 2.1的Dojo UI工具集以及Ruby on Rails。
至于数据,对Ajax的关注主要集中在B2C的Web站点,但Monson-Haefel指出Ajax实际上与Web服务和SOA有紧密联系,它能影响企业门户。
“一些人相信Ajax将成为门户解决方案的主要复苏因素。门户被宣传了很久,但实际上它并非所谓的银弹。而Ajax表示层与门户的结合将促进所有用户的体验。”
Monson-Haefel警告说Ajax很容易被滥用。“假如开发人员不理解使用理论,他们就会胡乱应用它而且人们会刻意避开JavaScript。我的推理来自浏览器弹出窗口。这种技术源于一种可用特性,但由于被滥用它已经成为Web技术中的下等公民,人们也不再使用它了。”
(责任编辑:铭铭 mingming_ky@126.com TEL:(010)68476636)






