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技术介绍的详细内容。