摘 要: 对现今流行的富互联网应用(RIA)进行了研究,介绍了RIA的概念、RIA产生的背景、RIA的特点以及所能解决的问题。列出了现有的主流RIA实现技术并分析了各自的特点。介绍了RIA的应用现状并对RIA的发展与应用提出了个人见解。
关键词: 富互联网应用程序 富客户端 浏览器/服务器
当前,互联网已经成为应用程序开发的默认平台。但是,用户对应用程序复杂性要求与日俱增,而现在的互联网应用程序在完成复杂应用方面却始终跟不上步伐。结果导致许多公司必须面对不满的客户、遭受营业额损失及成本增加。Web模型是基于页面的模型,缺少客户端智能机制。而且,它几乎无法完成复杂的用户交互。这样的技术使得Web应用程序难以使用,支持成本高,并且在很多方面无法发挥效应[2]。为了解决这些问题,出现了一种新类型的Internet应用程序,即富互联网(Rich Internet Applications,RIA)。这些应用程序结合了桌面应用程序的反应快、交互性强的优点以及Web应用程序传播范围广和容易传播的特性。RIA简化并改进了Web应用程序的用户交互。这样,用户开发的应用程序可以提供更丰富、更具有交互性和响应性的用户体验。
1 RIA的产生背景
企业级应用程序经历了几次系统架构方面的重要转变。在此过程中,客户端的表现能力有起有落。图1显示了Rich Internet Application的发展过程。
基于主机的应用程序:应用程序提供基于文本的非图形化用户界面,只有内部人员才能进行访问。
客户机/服务器(C/S)应用程序:20世纪90年代出现了客户机/服务器应用程序,采用图形用户界面,客户端的数据处理能力比较强。但由于客户端应用程序需要进行不断的更新,因此部署成本比较高。
浏览器/服务器(B/S)应用程序:90年代中期出现了B/S应用程序,Web的广泛使用解决了C/S应用程序部署和更新的困难。但由于采用了HTML页面形式的用户界面,客户端的数据处理能力较C/S应用程序有所回落[1]。
C/S架构的缺点主要是部署、更新的问题。B/S架构的缺点则是无法像C/S那样使用丰富的效果来展示数据,用户体验比较糟糕[3]。从C/S到B/S,二者受限于技术本身分别发展成了重客户端和重服务器端的模式。而RIA的出现带来了重新在客户端和服务器端进行更好的平衡的机会。
2 RIA的特点
图2是RIA的应用程序模型。RIA是集桌面应用程序的最佳用户界面功能与Web应用程序的普遍采用和快速、低成本部署以及互动多媒体通信的实时快捷于一体的新一代网络应用程序。RIA是一种安全、可升级、具有良好适应性的新的面向服务模型。RIA结合了声音、视频和实时对话的综合通信技术,从而给用户带来前所未有的网上体验。
RIA提供一个强劲的技术平台,使客户机的能力复原到与桌面型计算机软件应用或传统的C/S系统中的客户机能力十分接近。它适合传统的N层开发过程,同时也能够和遗留的环境集成以延展现有的应用程序而无需进行修改。RIA有能力解决各种复杂性,使需要复杂性的应用得以开发并且减少开发成本。
3 需要解决的问题
目前需要解决的技术:(1)需要一个更加强大的客户端运行环境,同时提供统一简便的开发模型。(2)最大可能地利用客户端资源,并且资源的访问是在一个可以控制的环境下完成的。随着HTML和CSS的演变,已经不像最初的Hyperlink(超链接)那么简单,但是相对于Windows运行环境,在浏览器上能够完成的图形表现远远不够。(3)具备访问网络的能力,同时能够比较“Smart”地集成Internet上的应用。(4)能够自动完成安全和升级。(5)拥有一个完整的安全模型和CAS(代码访问安全)。(6)具备离线应用的能力,因为访问终端的多样化,对于“有时离线”的支持已经成为一个关键点。例如在基于智能手机的应用中,要求客户端实时在线是不可能的,所以在Mobile的应用上采用传统的B/S结构已经不太现实。
4 RIA应用架构
针对上述要求,一些主流的应用厂商也提出了各自不同的RIA实现。下面针对目前出现的一些RIA应用架构进行阐述。
(1)Macromedia Flash/Flex。Macromedia Flash Player的高市场占有率使得客户端的RIA可以支持种类广泛的平台和设备[4]。Flex是为满足希望开发 RIA的企业级程序员的需求而推出的表示服务器和应用程序框架,可以运行于J2EE和.NET平台。Flex表示服务器提供基于标准的、声明性的编程方法和流程,并提供运行时服务,用于开发和部署丰富客户端应用程序的表示层。Flex开发者使用直观的基于XML的MXML来定义丰富的用户界面。该语言由 Flex服务器翻译成SWF格式的客户端应用程序,在Flash Player中运行。虽然Flex足够强大,但是其昂贵的软件许可和不是特别流畅的开发环境限制了其发展。Flex在近期内很难成为主流平台。
(2)Laszlo。Laszlo是一个开源的RIA开发环境。使用Laszlo平台时,开发者只需编写名为LZX的描述语言(其中整合了XML和JavaScript)。运行在J2EE应用服务器上的Laszlo平台会将其编译成SWF格式的文件并传输给客户端展示。从这点来说,Laszlo的本质和Flex是一样的。而且,在未来的计划中,Laszlo还可以将LZX编译成Java或.NET本地代码,从而大大提高运行效率。其劣势是缺乏大的商业实体的支持,难以成为标准。
(3)Avalon。Microsoft的Avalon是下一版本Windows(被称为Longhorn)的一部分,是一个图形和展示引擎。Avalon定义了一个在Longhorn中使用的新标记语言XAML(可扩展应用程序标记语言)。可以使用XAML来定义文本、图像和控件的布局,程序代码可以直接嵌入到XAML中,也可以保留在一个单独的文件内。这与Flex中的MXML或者Laszlo中的LZX非常相似。区别是:基于 Avalon的应用程序必须运行在Longhorn环境中,而Flex和Laszlo是不依赖于平台的,仅仅需要装有Flash播放器的浏览器即可[5]。
(4)Java SWT。Java 已经出现多年,并且完全支持创建基于窗体的用户界面。除了Java基础类(JFC/Swing)中的用户界面组件之外,开发人员还可以使用来自于 Eclipse Project的SWT工具箱和许多第三方工具箱进行开发。对于图形来说,可以采用Java 2D API。可以通过一个Web浏览器使用Java插件软件,或使用Java运行时环境中较新的Java Web Start技术来部署应用程序。使用Java建立Rich Client的主要缺陷是它的复杂性高及Java浏览器插件的低市场占有率问题。
(5)XUL。XUL是一种基于XML的用户界面语言,来自于Mozilla的开放源码项目。它可用于建立窗体应用程序。这些应用程序不但可以在 Mozilla浏览器上运行,而且也可以运行在其他描述引擎上。XUL描述引擎都非常小(100KB以下),它可以使用XML数据也可以生成XML数据。XUL的一个主要缺点在于它目前还没有获得一个主要商业实体的支持。XUL最大的优点在于它与Gecko引擎的集成(打开了通向大量Web标准的大门),而且与大多数其他XML用户界面描述语言相比它是一种表达力很强且简洁的语言。
(6)Bindows。Bindows是用JavaScript和DHTML开发的Web窗体框架。JavaScript用于客户端界面的显示和处理,XMLHTTP用于客户端与服务器的信息传输。利用JavaScript几乎可以实现Windows应用程序的大部分功能。XMLHTTP一直以来常被用于实现无刷新的Web页面。它和 JavaScript配合,可以完成数据从服务器和客户端的传输。Bindows的一个主要缺点是它采用一次全部载入的方式来实现脚本库,在窗口的加载期,需要一个漫长的等待过程,甚至浏览器的进程会产生无响应的情况。这点Bindows根本没有遵循用多少取多少的准则。另外,内部大量利用了IE6 的技术,没有考虑到非IE的浏览器,限制了Bindows的流行[5]。
另外,微软也提出了一个与Rich client类似的Smart Client技术。智能客户端应用是一个可扩展的、能集成不同应用的桌面应用程序,并具有无接触部署、自动更新、离线运用、动态加载应用组件和个性化用户界面等特征,在此不做赘述。
5 RIA的现状及发展趋势
现今的应用大多数是基于B/S结构的Web应用,而RIA应用才刚刚兴起。包括Macromedia和Microsoft等公司都已经提供了成功的案例。在Macromedia所提供的在线体验中,笔者着实感觉到了RIA带来的不一般的体验。在网络上也有了许多成功的RIA应用,但企业级的成功案例还不多。尽管如此,RIA也已经显现出比传统的基于浏览器的瘦客户端应用在处理复杂交互、改善用户体验等方面的优势。RIA的出现使得网络应用程序出现了分支,基于浏览器的传统网络应用会长时间存在下去,可以不依赖于浏览器的RIA应用也会越来越多。
HTML的设计初衷是为了处理文本,因此非常适合表达文本内容。从当前应用来看,HTML仅仅不适合开复杂的企业应用交互,而在对于大文本信息量,例如forum,wiki,blog,web mail和大量的互联网站,还是非HTML莫属[2]。因此传统的基于HTML的B/S应用还将在很长一段时间内占据主导地位。尽管如此,笔者仍相信,传统的基于浏览器的开发模式现在已经过了其鼎盛期。不管今天的RIA将来会不会成为主流应用程序,人们对开发具有高度互动性、丰富用户体验以及功能强大的客户端的追求是不变的。但是盲目地用RIA来改造现有的B/S应用也是不明智的,应该在用传统的基于HTML的B/S应用很难甚至无法满足要求或者使用RIA能够很好地改善现有的系统效果时才进行改造,因为毕竟在互联网上较为简单的应用仍然占据主导地位。而且目前RIA的体系发展仍未完全成熟,放弃现有的技术积累转而学习RIA的成本仍然不小,因此在采用RIA前需要充分地考虑。
RIA具有反映快、交互性强、传播范围广和易于传播等特点,是网络应用程序的发展方向。对其进行研究有助于改善现有的传统网络应用程序存在的问题,如开发复杂、用户体验差、难以进行复杂交互等,有助于掌握未来网络应用程序的发展方向,具有较强的理论意义和现实指导意义。
参考文献
1 何志国,陈奇.分布式应用体系结构研究.重庆邮电学院学报,2003;15(4)
2 雷军环,孟益民,厉亚.开发基于Web的分布式应用程序策略研究.长沙民政职业技术学院学报,2004;11(1)
3 商玮.多层分布式应用系统及其实现方法.计算机应用与软件,2003;(7)
4 颜金桫.KCLY小土豆工作室.Flash MX 2004 ActionScript 2.0与RIA应用程序开发.北京:电子工业出版社,2005
5 程序员(第02期).程序员杂志社,2005