//作者: 王玮琳 2007-01-20
三 什么样的RIA?
如果只把RIA看成一种概念,世间一切微言妙语皆是佛法,凡是能实现"Rich User Experience"的Internet程序,都可以看成RIA的程序。但如果真若是这样定义的话,界定什么是RIA什么不是就比较困难了。RIA到底应该是个什么样的,最早提出RIA概念的Macromedia(如今被Adobe收购了)的表述如下:
A rich Internet application (RIA) is an entirely new kind of web experience that is engaging, interactive, lightweight, and flexible. RIAs offer the flexibility and ease of use of an intelligent desktop application, and add the broad reach of traditional web applications.
前一句是针对Web程序本身的,就不多分析了,让我们来看看后一句,直译过来就是“RIAs 提供了一种弹性,客户可以轻松的在大量传统的Web程序上,使用智能的桌面程序”。略有一点抽象, 我罗唆点用直白一点的方式来说一下。到目前为止,传统桌面程序和互联网程序都有比较明显的区别,各有各的地盘。桌面程序往往功能强大、具备良好的交互性,界面丰富、响应时间短;而Web程序的优势在于用户的零部署安装、浏览器连通着的无限的咨询信息;一方面,在经历了C/S转B/S的重新洗牌后,桌面程序和互联网程序二者的分工也逐渐明确;另一方面,桌面程序也在想方设法的去利用互联网,分享互联网带来的好处,比如每日连线升级的杀毒软件,定时从网站上下载新闻的RSS阅读器等等。那么很自然的,我们就希望能有新的开发方式,开发出来的软件能同时拥有桌面软件和WEB软件的优点。这就是RIA的目标:用某种技术开发出一个程序,不需要什么额外的工作,就能在桌面环境里做运行,又能部署到互联网上,这个程序还需要继承桌面软件和WEB软件的现有优点。
简单的说,需要通过RIA去抹掉现有的桌面程序和WEB程序的界限。
我们可以看看Adobe官方提供的两个简单的例子,感受一下基于Flash的RIA是什么样:
http://examples.adobe.com/flex2/inproduct/sdk/restaurant/finder.html
http://examples.adobe.com/flex2/inproduct/sdk/photoviewer/PhotoViewer.html
对于RIA程序应当拥有什么样的具体特性,我还没有发现为大家所一致认可的说法。对一些现有的具体技术实现的程序是不是RIA目前也存在很多争论。所以在这里我也就只列一下提的比较多的RIA的特点,不做过多的介绍,以免说的不对,误导大家。
- 良好的用户体验, 响应速度快和丰富的用户界面
- 基于互联网的开放标准进行数据传输
- 运行时快速高效
- 能整合多种媒体格式
- 丰富的组件,基于事件驱动,能进行快速开发
- 支持联机/离线的数据传输
- 良好的兼容性,能在多种平台下运行
这里指出需要注意的几条:
1. Macromedia提出并推出用于了实现RIA的开发平台,但RIA不是专指Adobe(Macromedia)的那套开发体系,如果真要那么叫的话,可以称之为 Flash RIA(国外一些人喜欢这么说)。
2. RIA目前在很多地方既指富互联网应用系统,又指富互联网应用系统的开发技术,我们要注意区别。
3. 一般的互联网上的富客户端程序(包括拥有联机升级功能的桌面程序)并不能直接被看成RIA程序,RIA程序应当满足很多Internet运行的特点,比如功能要足够强大、跨平台、统一部署等等。
4. 至少从目前看,RIA一般还不能用某个单一的技术来实现,基本都是一些技术的综合应用,并且其实现的这种"Rich experience"也是基本是相对与过去基于HTML实现的程序而言的;不易把RIA的思想无限扩大,要知道人类对感观的追求可是永无止境的。
我们可以期待在经过一段时间发展和总结之后,人们能对RIA程序的应该拥有的特性达成明确的共识,并能制定统一的标准,这样将来我们能把RIA落实为一个技术词汇,从而明确的界定RIA在人类于互联网中追逐梦想的征途中所处的阶段,评价它起的作用。
四 当前的RIA开发技术简介
正如前面所说,从有WEB的第一天起,我们就在追求用更美更绚丽的方式去展现内容,而RIA应当有些什么硬指标目前也没有定论,所以如今号称能实现RIA的技术的非常的多。主流的RIA开发技术大部分的原理都很相似,基本都是基于XML布局来做UI,通过丰富的组件,同时把更多的UI展现的工作交给客户端,尽可能的减少数据通讯的量来获取更短的响应时间。下面谈谈我对一些有一定影响力的RIA开发技术的看法:
1) Adobe Flash/Flex
Flash就不需要介绍了,互联网中的老资格了,UI展现能力没的说,还一直在与时俱进。Flex是Adobe推出的创建并发布RIA的开发平台,最终是要把程序发布成Flash,从而一举解决了浏览器之间的移植问题。Flex使用MXML进行布局,用它自己的类似Javascript的Actionscript语言控制逻辑,目前是Flex的版本是 2.0。根据我直接的使用,Flex就像当年的VB,非常的不错;此外,Adobe将要推出Apollo的东东,能实现更高层次的RIA开发及运行支持,值得期待。我的感觉Apollo正在做一些当年Java承诺过却没有做到的事情,到底Apollo能不能做到,还需要时间去考验。
2) Laszlo
Laszlo 也是一个有多年历史的开源的RIA开发环境了,它就显得更实在一点。Laszlo平台主要目的是在目前主流的一些技术的基础上来实现RIA,它用的是名为LZX的描述语言,LZX整合了XML和Javascript,这样很多程序员都可以用最小的代价去进行RIA开放。Laszlo平台运行在J2EE 应用服务器上,也是把程序发布成SWF格式的文件,从这点上来说,Laszlo的本质和Flex是一样的。Laszlo还打算将LZX编译成Java或.NET本地代码,从而提高效率,跨大覆盖面。
3) Microsoft WPF/Expression
Microsoft的Windows Presentation Foundation(WPF)是Vista的一部分,是一个图形和展示引擎,主要由新加到.NET框架中的一组类集合而成。Avalon使用的布局语言是"XAML"(可扩展应用程序标记语言),用C#进行编程。微软去年年末推出了对应的开发工具MS Expression Studio, 一度引起轰动。其实WPF和这与Flex及Laszlo都原理都是如出一辙,不过WPF的程序毫无疑问目前只能在MS的平台上(严格说是只能在Vista上)运行。
4) Java SWT/JSF
Java是互联网里的霸主,RIA的这套理念的很多东西Java早就告诉过世人了,可遗憾的是在展现方面Java一直修不成正果,从最早的Servlet到JSP Tag, 几乎一度让人从失望到绝望。Java基础类(JFC/Swing)中的用户界面组件就不用说了,这两年开始流行的SWT工具箱,一样基于XML布局的JDNC,拉上AJAX救火的JSF,也都远没有Flex、WPF这些新锐来的朝气蓬勃; Java固有的复杂性高、效率偏低、开发投入高等问题,都阻碍了Java在RIA中的发展。注意我不是说Java不行,Flex、Laszlo都是要运行在J2EE上的,只不过在展现层Java是日落西山,如果没有重大的技术革新,沦为配角是早晚的事。
5) AJAX:
虽然有部分人认为AJAX这种新瓶装老酒的东西不能划入RIA的开发技术中,我还是要在这里把它列出来,因为有众多的AJAX的支持者都认为AJAX能很好的实现RIA程序,比如《Pragmatic Ajax - A Web 2.0 Primer》的第一章的标题就是《Building Rich Internet Application With Ajax》。
我曾经看到过一篇流传很广的文章,是国外一个没有用AJAX实际做过开发的人写给他们公司的一份调研报告,说的是AJAX是实现RIA的最好方法,原因是AJAX是在现有这些技术基础上做RIA最简便的方法,成本最低。他说的也有一点道理,代表了很多人想法。但事实是不是这样,AJAX真的简单,开发成本低么?我想每个用过AJAX做开发的人都有自己的答案。
对我来说,我相信对RIA来说AJAX不是最好的选择,抛开AJAX开放的复杂度和能实现的效果的局限性不说,在AJAX中Javascript引起的兼容性问题几乎是需要用穷举法去解决的,效果可想而知。举个例子:一块钢铁,原来是做成刀和矛去杀敌,后来加上火药成了枪弹,看上去威力大多了;可你这还是站在用钢铁杀人的思维上,倘若直接用超声波去对付敌人,就直接能杀人于无形,一块铁片都不需要用。HTML就好比这种钢铁,日常打把刀切菜是少不了它,有些时候需要大场面的时候,就需要用用超声波、用气流,甚至是原子弹解决问题,建造超声波武器、原子弹是很难,不过用他们,同样就是按一下按钮的事。
6) XUL
XUL(发音发成"zool")扩展用户界面语言。XUL是一个老家伙了,UI基于XML布局的思想就是从它来的,它来自于Mozilla的开放源码项目。XUL是对html的扩展,完全兼容于html,当然也就支持Javascript。XUL实现了完整、强大的图形用户界面设计功能,实际上mazilla整个就是基于XUL的。XUL到底怎么样,有多大影响力,我没有研究过,不敢妄言,好像国外还是比较认可它的。
这里我斗胆点评了一些RIA的开发技术,RIA的开发技术还有很多,大家自己要有看好的可以来补充,此外本人对RIA的认识有限,说的不妥之处还请朋友们不吝赐教。
五 不需要预测的未来
RIA会有将来会成为互联网的主流么?这是一个只有一个答案的问题,那就是“会”。不需要去纠缠那些技术细节,你至少可以相信HTML及其派生出来那些技术不能让对体验效果的追求永无止境、又十分挑剔的我们满意,那么能带给我们耳目一新的感觉的RIA有什么理由不成为主流? Microsoft和Adobe已经磨刀霍霍,准备在RIA的时代里挑大梁了,我们可别光坐着看热闹。
RIA将要取代HTML? 我想我们还在用宋朝就发明了的纸,就能说明回答这个问题,如同我在前面举的例子,如果有一天现代战争不需要用钢铁去杀人了,我们或许还需要用它去切菜。
声明:本博客中所有文章均为版主原创,转载请保留作者信息,并请注明出处。