几种RIA技术介绍



Rich Internet Application(富互联网应用程序,简称RIA),一种全新的Web应用程序架构,它结合了桌面软件良好的用户体验和web应用程序易部署的优点,很快获得了企业的青睐。近年来,各大开发平台供应商相继推出新的技术来支持RIA的开发,从Ajax到SilverLight,从Apollo和AIR到Flex和Flash,从JavaFX到Laszlo,各种技术粉墨登台,以期成为大家关注的焦点。

然而,作为应用系统开发厂商,开发团队和开发者,在RIA大潮中,选择什么样的技术,让自己更好地构建RIA系统,成为一个我们需要仔细考虑的问题。

AJAX

Ajax实际上是用新的技巧把一些古老技术结合在一起使用,从而让WebApplication用户界面的交互性得到极大的提升。

在Ajax中,XMLHttpRequest是核心,是Ajax强大功能的来源,Ajax和传统的Web界面技术区别也就在此。通过XMLHttpRequest,就把浏览器中的HTML(DHTML)和服务器端的数据分离开。利用JavaScript来操纵客户端访问服务器获取数据,并修改HTML结构,以显示数据。使用Ajax的经典例子就是Gmail和GoogleMaps了。

Flash/Flex/Laszlo

Flex是为满足企业级应用而推出的应用程序框架。Flex提供基于标准的、声明性的编程方法和流程,用于开发和部署丰富客户端应用程序的表示层。Flex开发者使用直观的、基于XML的MXML来定义丰富的用户界面,利用ActionScript(一种面向对象的脚本语言)来编写程序逻辑。

该语言由 Flex服务器翻译成SWF格式的客户端应用程序,在FlashPlayer中运行。目前Flex已经发布了Flex 3.0 beta。

Laszlo是一个开源的RIA开发环境。使用Laszlo平台时,开发者只需编写名为LZX的描述语言(其中整合了XML和JavaScript),运行在J2EE应用服务器上的Laszlo平台会将其编译成swf格式的文件并传输给客户端展示。在未来的计划中,Laszlo还可以将LZX编译成Java或.NET本地代码,从而大大提高运行效率。在最新发布的Laszlo4.0中,开发人员可以选择Laszlo最终显示为Flash还是DHTML。

Flex和Laszlo从运行位置来看,他们都属于服务器端技术,和大家熟悉的ASP,ASP.NET,JSP和PHP的运行机制类似。只是ASP等动态网页技术,是把界面元素解析为HTML发送给客户端的浏览器来展现;而Flex和Laszlo是把界面元素解析为二进制的swf文件,运行到浏览器中的FlashPlayer插件里。

AIR

AIR之前称为Apollo,Adobe官方的解释为:是一个跨操作系统的运行环境,允许开发人员使用以前Web开发的技能来创建RichInternet Application,并部署到桌面上运行。总体来说,AIR就是Adobe把现有的技术,如:Flash、PDF、JavaScript、XML和ActionScript集成在一起,并提供一个客户端运行环境,可以让开发人员开发可以访问Internet资源的桌面程序。本质上,AIR就是让Flash(或者Ajax)脱离浏览器运行的一个桌面应用程序运行环境。

要开发AIR应用程序,也很简单,有两种技术可供选择:一,使用HTML+JS技术;二,使用Flex+Flash。可使用的开发工具也就是开发上述技术的工具,如:flexbuilder、 flash IDE、eclipse、notepad 等等。

使用AIR来开发RIA的优缺点和Flex等类似,最大的好处就是:可以脱离浏览器成为一个独立的桌面程序而运行,并且不受浏览器安全限制,可以有更多的权限访问本地资源。

目前,AIR还在测试阶段,很多功能还不完善,相信等正式版发布后,会有更多特性值得我们期待。

WPF

一直以来,应用程序的用户界面都可以用不同的技术开发,从MFC到VB,从WindowsForms到HTML+JS。对于开发人员来说,这就需要针对不同的应用程序类型,使用不同界面开发技术。随着Flash等多媒体2D或者3D界面的出现,选择就越来越多。如果想使用一种技术就能开发各类应用程序的界面,这将是一个巨大的挑战。

Windows Presentation Foundation(WPF),最初代号为“Avalon”,目前作为 .NET 3.0的一个组件发布,就是为解决这一难题而设计。

WPF为桌面客户端和浏览器客户端提供了通用基础,大大简化了二者的应用程序开发工作。WPF采用更为现代的方法,支持视频、动画、2D或3D图形以及各种类型的文档,从而可以让用户以全新的方式处理信息。此外,WPF还为桌面客户端和浏览器客户端提供了通用基础,大大简化了二者的应用程序开发工作。

作为微软的下一代界面技术,WPF的最大特点就是把界面的布局描述和界面逻辑代码分离。WPF通过XAML(扩展应用程序标记语言,一种基于XML的语言,允许以声明方式指定用户界面,而非代码)把专业界面设计人员的工作和专业的程序开发人员的工作分开,让他们更容易协作,以开发出界面炫丽,功能强大的应用程序。

同时微软为不同的工作提供了不同的工具,针对界面设计人员,推出Expression Studio;针对程序开发人员,推出VisualStudio 2008(有望今年年底发布RTM)。

通过提供更强大的图形支持功能,WPF 使得一系列数据可视化成为可能,而这依靠Windows Forms 或其他的早期技术是不可能实现的。WPF 还提供了 XML Paper Specification(XPS) 的基础,可定义查看、分发和打印固定格式文档的标准格式。

Silverlight

Silverlight最初的代号叫“WPF/E”,意为WPF run onEverywhere,它是WPF的一个子集。Silverlight被社区称为微软出品的Flash Killer。

官方对其的定义是:“Silverlight是一个跨浏览器的、跨平台的插件,为网络带来下一代基于.NET的媒体体验和丰富的交互式应用程序”。Silverlight提供灵活的编程模型,支持AJAX,VB, C#, Python, Ruby等语言,并集成到现有的WebApplication中,能够访问其中的DOM信息。内置多媒体技术的支持,可以以很低的成本播放媒体文件。

目前,Silverlight发布了两个版本, 1.0 beta和1.1alpha。可以运行于Windows和Mac平台下。同时Mono项目也在积极的开发Moonlight,一个在Linux下的Silverlight实现。

XUL

XUL是一种基于XML的用户界面语言,它来自于Mozilla的开放源码项目。它可用于建立窗体应用程序,这些应用程序不但可以在Mozilla浏览器上运行,而且也可以运行在其他描述引擎上,如Zulu(一个FlashMX组件)和Thinleys(一个Java实现)。XUL描述引擎都非常小(100K以下),它可以使用XML数据也可以生成XML数据。XUL的一个主要缺点在于它目前还没有获得一个主要商业实体的支持。XUL最大的优点在于它与Gecko引擎的集成(打开了通向大量Web标准的大门),以及与大多数其它XML用户界面描述语言相比,它是一种非常具有表达力和简洁的语言。

目前XUL可以嵌入在Mozilla(或FireFox)浏览器中运行,也可以通过一个XULRunner的运行环境,脱离浏览器运行。

JavaFX

“JavaFX是一个构建于Java技术之上完整的运行环境,可以用来交付到桌面、移动设备、手持设备和电视等环境的富互联网应用(RIA)。”SUN如此定义JavaFX。JavaFX是SUN进入RIA领域的开发技术,它包含JavaFXScript和JavaFX Mobile两个部分,使用一种全新的脚本语言,依赖Java SE/ME运行时,利用Java2D和SwingAPI来实现在桌面或者移动设备上运行RIA应用。

三类RIA技术比较

通过上面各种RIA开发技术介绍,我们可以看到它们各自的理念有所不同,运行的环境也不尽相同。总体说来,RIA开发技术分为三类:

1.浏览器类,整个RIA是运行于浏览器里面,依靠传统的HTML+CSS+JavaScript技术来实现界面的表现和控制。

2.浏览器插件类,RIA通过插件的方式运行于浏览器中。正在运行的程序是厂商特定的运行格式,需要特定的运行环境。

3.桌面类,RIA脱离浏览器直接运行于桌面之上。和常见的桌面程序很类似,但是可以访问Internet资源,并具有部署容易,更新简单的特点。

在三种分类的技术中,浏览器技术是成为开发RIA最直接的技术,此类技术适合一直在做Web应用的软件开发商。

新型桌面技术则完全另起炉灶,充分使用桌面开发的技术、技巧和理念,并结合WebApplication部署方便,即时安装的优点。此类技术适合做Windows应用的开发商。

浏览器插件则在浏览器技术和新型桌面之间进行了折衷,既使用新的技术来实现丰富的界面,又能和现有的Web技术进行部分的集成。

哪种RIA技术适合你

RIA是未来应用系统开发的一个重要方向,很多软件开发企业,开发团队和开发人员都希望在未来找到一个适合自己的技术,从而让自己事半功倍,在提高开发效率,降低开发成本的同时,又能交付给客户体验丰富、功能完善的软件系统。

虽然在上面我们介绍了各种技术及其优缺点,并对他们进行了一个归类,但是要回答“我们该选择那种”这个问题,还需要考虑下面的情况?

首先是我们自身的情况:

◆ 目前你的技术能力主要在Web开发方面还是Windows开发方面?

◆ 目前你开发的应用程序功能类型是内容展现为主还是事务处理为主?

◆ 目前主要在使用那个厂商或组织的技术?.NET 或者JAVA或者其他Web技术?

◆ 目前是否在进行RIA或者类似RIA的开发?

◆ 目前在使用那种RIA开发技术?

其次是考虑技术的选择标准:

◆ 学习成本,开发效率

◆ 对应用程序类型的适合性

◆ 运行环境部署成本

◆ 运行效率

◆ 完善的功能特性

技术授权成本和服务器部署成本,开源、免费或收费

◆ 官方和社区的技术支持

◆ 完善的开发工具

◆ 完善的UI组件

◆ 跨平台特性

最后,我们根据自己的具体情况和选择技术的标准,可以为对这些技术进行一个定位和排序。

以技术运行环境部署成本来比较(由低到高):

Ajax > Flex/Laszlo> Silverlight > XUL >WPF > AIR > JavaFX

以技术授权成本来看:

开源的有:Ajax,Laszlo,XUL,JavaFX

免费的有:Silverlight,WPF,AIR

收费的有:Flex

从技术支持来看:无疑Silverlight和WPF会获得最好的官方支持,Flex的官方技术也在改善,其他技术主要依靠社区的支持。

就开发工具来看:Silverlight和WPF可以有最强大的工具使用,Flex、AIR和Laszlo也有优秀的IDE可供使用,JavaFX的开发工具尚未明朗,Ajax要看具体的实现而定,XUL的开发工具进展缓慢。

就可使用UI组件的情况来看:WPF和Silverlight需要自己扩展或者使用第三方的;Flex、AIR和Laszlo都提供了丰富的UI组件,XUL自己有一套基本够用的UI组件,JavaFX依赖JRE自带的UI工具箱。

对于跨平台特性和兼容性我们也可以得到一个排序:

Flex/Laszlo > Ajax> XUL > JavaFX > AIR> Silverlight > WPF

总而言之,要选择一种适合自己的RIA开发技术,需要从各个方面来权衡。不仅要明确自己的情况,考虑未来的需求,也要熟悉每种技术的差异和优缺点,这样才能找到一种正确的技术。

以上就是几种RIA技术介绍的详细内容,更多请关注其它相关文章!