依我个人的理解,RIA(Rich Internet Application,富互联网应用系统)即一个充分强大的用户端浏览器,这个浏览器可以是 IE(XAML)、Mozilla FireFox(XUL)、Flash(Flex) 等等,说穿了,也就是一个 HTML 的升级而已,和 ASP、JSP 产生HTML 供客户端浏览一样,你也可能需要各种各样的工具去产生静态的或动态的这些浏览器可以使用的脚本。不管怎么说,这是一个迫切的、必要的趋势!
以下文章来自 Oracle 的杂志 作者:Cameron O'Rourke
1. 什么是用RIA?
RIA(Rich Internet Application,富互联网应用系统)技术允许我们在因特网上以一种象使用Web一样简单的方式来部署富客户端程序。这是一个用户接口,它比用HTML能实现的接口更加健壮、反应更加灵敏和更具有令人感兴趣的可视化特性。无论将来RIA是否能够如人们所猜测的那样完全代替HTML应用系统,对于那些采用胖客户端技术运行复杂应用系统的机构来说,RIA确实提供了一种廉价的选择。
2. 为什么用RIA?
基于HTML的应用程序之所以变得流行是由于应用系统的部署成本低、结构简单,且HTML易于学习和使用。很多用户和开发人员都乐于放弃由桌面计算机带来的用户界面改进,来实现对新数据和应用系统的快速访问。与丧失一些重要的UI功能相比,基于Web的方式所带来的好处要更大得多。
然而,某些应用系统并不完全适合采用HTML技术。复杂的应用系统可能要求多次提取网页来完成一项事务处理,在某些领域中,如医药和财务领域,这往往导致交互速度低得无法接受。让我考虑一个项目管理系统:我们可以将其实现为一个HTML应用系统,但是如果用户可以看到并且操作图表、进度表和各种层次结构,那么显然会工作得更好。
此外,虽然HTML开始走向简单,但是即使简单的交互活动也仍然需要用很多的脚本来完成。即使一个输入窗体经过仔细的布置和全面的脚本设计,它从浏览器所能发送的也仅仅是简单的"名字/值"对。如果一个HTML窗体能够以XML文档形式发送和接收更复杂的数据结构,那就好多了。
RIA利用相对健壮的客户端描述引擎,这个引擎能够提供内容密集、响应速度快和图形丰富的用户界面。除了提供一个具有各种控件(滑标、日期选择器、窗口、选项卡、微调控制器和标尺等)的界面之外,RIA一般还允许使用SVG(Scalable Vector Graphics,可伸缩向量图)或其他技术来随时构建图形。一些RIA技术甚至能够提供全活动的动画来对数据变化作出响应。
RIA的另一个好处在于,数据能够被缓存在客户端,从而可以实现一个比基于HTML的响应速度更快且数据往返于服务器的次数更少的用户界面。对于无线设备和需要偶尔连接的设备来说,将来的趋势肯定是向富客户端的方向发展,并且会逐渐远离基于文本的Web客户端。那些运行在膝上设备上的应用系统,可以被设计成以离线方式工作,或者至少当连接丢失的时候能基本上以离线的方式工作。
图1给出了一个典型的RIA体系结构。XML通常被用作数据传输的格式,有时也被用来描述窗体的布局。在很多的实例中,客户端可以保持与数据源的连接,这样服务器能够实时地对客户端数据进行更新。对一个Oracle数据的访问可以通过Web服务调用来完成。
图1: 典型的RIA体系结构
3. 用于富客户端的技术
Java:
一些相当复杂的客户端应用程序(Eclipse)都是用Java编写的,这说明可以用Java来建立几乎任何一个能够想象得到的富客户端应用程序。到目前为止,Java已经出现几年了,并且完全支持创建基于窗体的用户界面。除了Java基础类(JFC/Swing)中的用户界面组件之外,开发人员还可以使用来自于Eclipse Project的SWT工具箱和许多第三方工具箱进行开发。对于图形来说,可以采用Java 2D API--一个非常完整且非常复杂的图形API。Java还具有对XML和Web服务无人匹敌的支持能力。你可以通过一个Web浏览器使用Java插件软件,或使用Java运行时环境中较新的Java Web Start技术来部署应用程序。使用Java建立富客户端程序的主要缺陷是它的复杂性(即使对简单的窗体和图形也要求编写非常烦琐的代码)。它的优点在于Java对Web标准的全面支持,及该语言和类库的深刻内涵。
XUL:
XUL(念作"zool")是一个基于XML的用户界面语言,它来自于Mozilla的开放源码项目。它可用于建立窗体应用程序,这些应用程序不但可以在Mozilla浏览器上运行,而且也可以运行在其他描述引擎上,如Zulu(一个Flash MX组件)和Thinleys(一个Java实现)。XUL描述引擎都非常小(100K以下),它可以使用XML数据也可以生成XML数据。同Java的情况一样,XUL也有一个非常大的用户团体,这个团体有大量的开放源工具,如Theodore ThinletEditor——一个使你能够以图形化方式布局用户界面,且可以生成相应XUL的Java应用程序。XUL的一个主要缺点在于它目前还没有获得一个主要商业实体的支持。XUL最大的优点在于它与Gecko引擎的集成(打开了通向大量Web标准的大门),以及与大多数其他XML用户界面描述语言相比它是一种非常具有表达力和简洁的语言。
Macromedia Flash和Flex:
Flash是一个已经成熟的商业产品,它可以在Web网页中引入交互式的图形界面。最近经过升级后,新版本包含了建立窗体风格的应用程序的功能。尽管Flash作为一个在Web上最广泛部署的前端技术还有争议(取决于所选用的Flash Player版本),但据称已经有98%以上的桌面系统都支持Falsh。由于用来创建动画式图形的Flash工具其功能十分强大和是可视化的(与之相反其它技术要求进行低级的图形编码),所以图形设计人员使用起来十分得心应手。Flah采用的脚本语言是ActionScript--ECMAScript 1.5的一个变种,该脚本语言又被称为JavaScript。Flex产品对Flash增加了一个XML描述语言,使得可以编译用户界面,并且能够用Flash Player来随时进行描述。Flex使得传统的开发机构能更好地了解和使用Flash。Flex和Flash的最大缺点在于对XML和Web服务等标准的支持很有限,而且作为应用开发工具的环境还不大成熟。Flex和Flash的优点在于它可以很容易的用来创建复杂的动画式显示,以及可以使用第三方附件。
Oracle Forms:
Oracle Forms是用来构建以数据库为中心的互联网应用系统的一个成熟的商品化产品。通过Oracle Forms,你可以使用一个输出窗体模块文件的可视化设计器创建窗体。为了便于在该设计工具外部进一步进行处理,模块文件要么采用私有的FMT格式,要么采用XML格式。这些模块文件驱动一个描述窗体的Java运行时环境。除了所有窗体的标准窗口小部件之外,还可以通过集成附加的可插入的Java组件和一些定制的JavaBean来实现更多的功能性。Oracle Forms采用的脚本语言为PL/SQL,Oracle数据库也采用同样的脚本语言。Oracle Forms的一个非常有趣的特点就是,用来建立、编辑和编译窗体模块文件的Java API--开发人员可以通过创建脚本来生成众多的窗体应用程序,或者进行全局性的改动。Oracle Forms的主要缺点是,进行Web部署需要获得Oracle应用服务器的使用许可。它的优点是,它可以与Oracle数据库和Oracle平台的其他部分(如Single Sign-On(单一登录)和Enterprise Manager(企业管理器))紧密集成,对国际化的广泛支持,以及创建以数据为中心应用程序的极高效率。