富因特网应用程序(Rich Internet Applications,RIA)利用具有很强交互性的富客户端技术来为用户提供一个更高和更全方位的网络体验。RIA集成了桌面应用的交互性和传统Web应用的部署灵活性与成本分析,以创建单一而完整的用户体验。富客户端技术使创建RIA成为可能,它提供一个运行时的环境以承载被编译的客户端应用程序,该客户端应用程序是一个使用HTTP协议发布的文件。客户端应用程序使用异步的C/S结构连接到现有的应用服务器,这是一种安全的、可升级的、具有良好适应性的面向服务模型,这种模型由当前所采用的Web服务驱动。
富客户端技术正在不断地完善中,但并不意味着会取代HTML。相反它将进一步扩展浏览器功能,使之提供更加高效和友好的用户接口。许多RIA都在浏览器中运行,甚至它本身就是HTML的一部分,所以HTML将继续保持其原有的角色。另外,由于富客户端技术可以支持运动的图象、视频、音频、双向的数据通信和创建复杂的窗体,它为创建应用程序用户接口提供了一个高效而完善的开发环境.
RIA开发必须具备三个要素:富客户端技术、服务器技术和开发工具。富客户端技术充分利用本地机器的处理能力来处理数据,而不需要把某些数据发送到服务器处理,充分利用了本地机器的资源。服务器技术提供了一种与富客户端的连接机制,作为RIA的服务器技术必须从现有的服务器技术继承,可以提供一个快速的脚本环境,支持数据库应用开发、双向数据通信、实时数据通信,甚至采用一种新的服务器,例如:ColdFusion Server和Flash Communication Server等。RIA实现必须有一组简单而高效的开发工具,如果没有一组简单而高效的开发工具,那么富客户端技术与服务器技术是毫无意义的。正是由于RIA的C/S结构,它需要一组开发工具协同工作才可以完成。
1 RIA的产生背景
RIA是Rich Internet Applications的缩写,翻译成中文为富因特网应用程序(Macromedia中文网站翻译为Rich Internet应用程序)
传统网络程序的开发是基于页面的、服务器端数据传递的模式,把网络程序的表示层建立于HTML页面之上,而HTML是适合于文本的,传统的基于页面的系统已经渐渐不能满足网络浏览者的更高的、全方位的体验要求了,这就是被Macromedia公司称之为的“体验问题”("Experience Matters"),而富因特网应用程序(Rich Internet Applications,缩写为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和)。运行在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是用和DHTML开发的Web窗体框架。用于客户端界面的显示和处理,XMLHTTP用于客户端与服务器的信息传输。利用几乎可以实现Windows应用程序的大部分功能。XMLHTTP一直以来常被用于实现无刷新的Web页面。它和 配合,可以完成数据从服务器和客户端的传输。Bindows的一个主要缺点是它采用全部载入的方式来实现脚本库,在窗口的加载期,需要一个漫长的等待过程,甚至浏览器的进程会产生无响应的情况。这点Bindows根本没有遵循用多少取多少的准则。另外,内部大量利用了IE6 的技术,没有考虑到非IE的浏览器,限制了Bindows的流行[5]。
另外,微软也提出了一个与Rich client类似的Smart Client技术。智能客户端应用是一个可扩展的、能集成不同应用的桌面应用程序,并具有无接触部署、自动更新、离线运用、动态加载应用组件和个性化用户界面等特征,在此不做赘述。
5 RIA的现状及发展趋势
现今的应用大多数是基于B/S结构的Web应用,而RIA应用才刚刚兴起。包括Macromedia和Microsoft等公司都已经提供了成功的。在Macromedia所提供的在线体验中,笔者着实感觉到了RIA带来的不一般的体验。在网络上也有了许多成功的RIA应用,但企业级的成功还不多。尽管如此,RIA也已经显现出比传统的基于浏览器的瘦客户端应用在处理复杂交互、改善用户体验等方面的优势。RIA的出现使得网络应用程序出现了分支,基于浏览器的传统网络应用会长时间存在下去,可以不依赖于浏览器的RIA应用也会越来越多。
在过去的两到三年中,Web开发人员一直是想构建一种比传统HTML更丰富的客户端:这是一个用户接口,它比用HTML能实现的接口更加健壮、反应更加灵敏和更具有令人感兴趣的可视化特性。RIA技术的出现允许我们在因特网上以一种像使用Web一样简单的方式来部署富客户端程序。无论将来RIA是否能够如人们所猜测的那样完全代替HTML应用系统,对于那些采用C/S架构的胖客户端技术运行复杂应用系统的机构和采用基于B/S架构的瘦客户端技术部署Web应用系统地机构来说,RIA确实提供了一种廉价的选择。
RIA具有反映快、交互性强、传播范围广和易于传播等特点,是网络应用程序的发展方向。对其进行研究有助于改善现有的传统网络应用程序存在的问题,如开发复杂、用户体验差、难以进行复杂交互等,有助于掌握未来网络应用程序的发展方向,具有较强的理论意义和现实指导意义。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。