浅析丰富互联网应用程序(RIA)的发展历史与应
摘 要:
关键词:
一、 丰富互联网应用程序(RIA)的发展历史
随着网络技术的高速发展,互联网已经日益成为应用程序开发的默认平台。基于浏览器(或者说基于HTML)的应用程序由于结构简单、部署成本低、版本维护容易等原因,渐渐成为在线应用开发的主流。诚然,基于Web方式实现的用户界面,由于受到浏览器与HTML的约束,其用户体验相比传统应用程序大大下降,但随之带来的性能提升、数据实时同步、快速访问应用程序等好处却要大得多。因此,在互联网时代,B/S架构成为开发者们快速构建在线应用程序的最佳选择。
但随着用户对Web应用依赖日深,Web应用程序的不足也渐渐暴露。不得不承认,简单而轻量的HTML技术,对于数据的处理与呈现效率极为低下。在某些复杂的应用需求里,有可能会频繁地向服务器请求或提交数据。传统的HTML应用程序一般是通过页面跳转和刷新来完成新数据的获取,如此一来,无谓的字节被浪费在页面的跳转上,耗费的服务器资源大大提升。同时,由于频繁的页面跳转和重定向,用户中断交互过程的风险也增加了,用户体验急剧下降。这种应用场景在例如企业级办公自动化系统中尤其明显。
基于上述理由,Macromedia公司(后被Adobe公司收购)于2002年提出了丰富互联网应用程序(Rich Internet Application,以下简称RIA)的概念,并提出了基于Flash技术的解决方案。RIA利用一个轻量级的客户端脚本解释引擎,使用虚拟机的方式为用户提供内容密集、响应速度快、图形丰富以及允许异步处理的用户界面。
RIA技术拥有HTML的大部分优点:轻量、结构简单、部署成本低、版本维护容易且可被客户端缓存,同时它还拥有相对强大的数据处理能力、异步的事件处理机制以及丰富的可视化特性。例如,RIA内建支持XML,支持普通的http连接及socket连接,支持流媒体视频播放以及矢量动画等。这对于试图从肥胖臃肿的C/S架构转变为轻量的B/S架构但又想保留原系统复杂功能及用户界面的开发者而言,是一种非常廉价而不失可行性的解决方案。
二、 常见的RIA技术
1. Flash/Flex
Macromedia公司创建了Flash及Flex,随后被Adobe公司收购。Flash的解决方案是在浏览器上安装一个轻量级的脚本解释引擎(ActionScript Virtual Machine,简称AVM),作用类似Java虚拟机,解释并运行ActionScript(Flash的脚本语言)。最新统计数据表明,全球98%以上的浏览器(包括各种桌面浏览器及移动设备浏览器)装有不同版本的Flash Player。因此,以Flash Player为客户端的RIA是目前全球应用最广泛、普及率最高的丰富互联网应用程序。
Flex是企业级RIA的表示服务器和应用程序框架,运行于J2EE和.NET平台。Flex表示服务器提供基于标准的、声明性的编程方法和流程,并提供运行时服务,用于开发和部署丰富客户端应用程序的表示层。Flex使用直观的基于XML的MXML来定义丰富的用户界面。该语言由 Flex服务器编译为SWF格式的客户端应用程序,在Flash Player中运行。
Flash基于Web架构部署,因此部署维护成本很低,客户端及运行数据均可被缓存,因此能节省大量的服务器资源。
Flash还允许以离线、在线两种模式进行工作。在离线状态下,Flash应用程序能将数据处理结果暂存本地,一旦成功重新连接服务器就可以进行提交。
2. Laszlo
Laszlo是一个开源的RIA开发环境。其实现方式类似Flex,通过运行在J2EE应用服务器上的Laszlo平台将LZX语言(基于XML及Javascript)编译为SWF格式文件供客户端中的Flash Player运行。
3. Silverlight
Silverlight是微软推出的用于抗争Flash的新一代RIA技术。Silverlight利用XAML(可扩展应用程序标记语言)来定义图文声像等多媒体元素、用户界面等,类似于Flex。同样的,Silverlight依赖于Silverlight的播放器。不过由于这是微软自家技术的原因,新版本IE浏览器都将自带Silverlight播放器。
目前由于IDE不成熟、缺乏文档等原因,Silverlight还不够普及。加上未来的HTML5技术,能够在一定程度上对Silverlight的定位发起冲击,因此前景不甚明朗。
4. XUL
XUL是一种基于XML的用户界面语言,它来自于Mozilla的开放源码项目。它可用于建立窗体应用程序,这些应用程序不但可以在 Mozilla浏览器上运行,而且也可以运行在其他描述引擎上,如Zulu(一个Flash MX组件)和Thinleys(一个Java实现)。XUL描述引擎都非常小(100K以下),它可以使用XML数据也可以生成XML数据。XUL的一个主要缺点在于它目前还没有获得一个主要商业实体的支持。XUL最大的优点在于它与Gecko引擎的集成,以及与大多数其它XML用户界面描述语言相比它是一种非常具有表达力和简洁的语言。
5. Ajax
严格来讲,Ajax不能算作RIA。因为Ajax仍然是基于传统的HTML与Javascript技术,不具备多媒体处理能力。但强大的异步传输能力及事件响应机制,使得Ajax能够胜任丰富用户体验的应用开发。Ajax可以和Flash一样,在前台响应用户操作的同时以后台方式向服务器获取或提交数据,相比页面频繁跳转的传统Web应用,其用户体验大大提升。同时,Ajax与Flash相比的优势在于,Ajax仍然基于传统的HTML与Javascript技术,不需要任何额外插件的支持。
三、 RIA的应用趋势
RIA继承了基于HTML技术的B/S架构应用的种种优点,又进一步强化了可视化能力、数据处理能力,非常接近传统的基于C/S架构的胖客户端应用程序,在实现了复杂应用系统需求的同时也大大提升了用户体验。
展望未来,基于RIA的应用程序能以无刷新页面的方式在后台更新数据,提供Drag & Drop的拖放式可视化操作,具备在线/离线的操作能力,可立即部署、跨平台可用、逐步下载功能组件,拥有强大的多媒体处理能力,这些将使客户端拥有近似于桌面程序或基于C/S架构的胖客户端的功能体验,并且大大降低研发成本。
随着Flash Player的普及与推广,目前已经占领了98%的Web浏览器与各种移动设备。这种现实使得基于Flash技术的RIA应用开发渐渐成为行业标准。
RIA技术在实际中比较适合以下应用:
1. CRM、OA、ERP等传统多人协作应用。目前,越来越多的大型企业OA或全部或部分地使用了Flex作为应用程序框架。使用RIA技术能让客户端变得更为轻量,大大节省系统部署及维护的成本。同时,由于RIA支持离线数据暂存、异步事件处理,应用程
序与数据库之间的数据交换相比传统Web应用程序所消耗的服务器资源更少。此外RIA强大的视觉呈现能力,可以轻松模拟出传统桌面程序的用户使用界面,这使得用户习惯得以顺延,大大降低由于升级系统而重新培训用户的成本;
2. 希望展现更好界面、展现丰富媒体体验的网站,例如全球最大的视频分享网站YouTube就使用Flash技术播放视音频;对于一些电影节目的官方网站来说,为了在线上播放电影精彩预告、电影原声,以便吸引更多的观众进入影院,RIA强大的多媒体整合能力无疑是网站建设者们最为看重的;
3. 网络广告,目前绝大多数动画、视频、交互广告采用RIA技术实现。传统的静态图片广告、文字链已经过时s,只有充满了视频、动画、声效、互动的丰富媒体体验广告,才能成功吸引视觉焦点;
4. Web Game,轻量级别的2D网络互动游戏。其中又分为在线单机游戏,例如一般的Flash小游戏;网页游戏,例如开心网的停车、偷菜等游戏;甚至大型的多人在线角色扮演游戏,例如著名的Flash网游Dofus()等。虽然这些基于Flash的Web Game,由于Flash Player的运行效率问题,无法实现3D图像的处理,但对于2D游戏而言,相比传统的网络游戏,又具有无需下载客户端、运行速度快等优点。由于其开发简便、对用户友好,得到了众多线上游戏开发商的欢迎。
RIA技术亦有其局限性。主要体现在:
1. 无法检索。就Flash而言,所有元素均被封装在SWF文件包内,其中的文本更是由于已图形化而无法被搜索引擎收录。如要强行解释SWF文件,将势必大大降低搜索引擎的索引效率。因此,鲜有内容类站点采用全Flash技术进行制作,反而对于一些需要对文本进行加密的(例如付费阅读)网站会采用Flash技术来防止盗版。
2. 安全性问题。RIA应用程序所依赖的运行环境需要在浏览器上下载并安装额外插件,因此会带来一系列的安全性问题。安全性包括两方面,一是插件本身的漏洞可能会引致客户端的安全问题;二是RIA客户端由于能被浏览器缓存,程序源代码容易遭到破解。
3. 3D图像处理能力。为便于部署与普及,Flash Player被设计得很小巧,这导致它无法调用客户端的核心资源,例如3D硬件图形加速。未来这方面会有改善。
四、 结语
低成本的部署与维护、复杂的数据交换、丰富的视觉呈现、简洁高效的用户体验,是Web应用开发所追求的最终效果。从C/S架构的胖客户端到B/S架构的Web瘦客户端,再到同样基于B/S架构的丰富互联网应用程序,RIA技术是实现这一最终目标的利器。未来随着RIA技术的发展,诸如检索、3D图像处理能力等问题的解决,RIA技术将越来越多地体现出它的优越性。其提倡丰富媒体、丰富体验的理念,必将让RIA技术赢得绝大部分Web应用开发的市场。
参考文献:
. 程序员,2005(2)