欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

几种RIA技术介绍

程序员文章站 2022-04-13 15:20:55
...


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技术介绍的详细内容,更多请关注其它相关文章!