上个月,给《软件世界》投了个稿。主要讨论了在RIA大潮将要到来之时,我们需要选择什么样的技术。目录如下:

前言
RIA技术介绍和优缺点

Ajax
Flash/Flex/Laszlo
Adobe AIR(Adobe Integrated Runtime)
WPF(Windows Presentation Foundation)
Microsoft Silverlight
Mozilla XUL
SUN JavaFX

RIA技术分类和比较

浏览器类
浏览器插件类
新型桌面类

那种RIA技术适合你

你是什么样的类型?
选择标准
找到合适自己的(目前和未来)

总结

在互联网技术不断普及的今天,我们随处可见Web应用程序(Web Application)的身影,甚至于Web Application已经成为很多开发企业开发各类软件系统的首选。Web Application的出现是为了解决早期C/S(客户端-服务器)系统的部署、更新和维护的困难。其通过把整个应用程序运行在服务器端,把界面解析为HTML通过HTTP协议发送给客户端的浏览器,以展现给用户。

这种基于页面的模型虽然结构简单,系统部署成本低,但同时也带来了一些额外的问题,比如:用户操作体验简单,不容易开发丰富的效果来展示数据,应用程序需要联网才能运行,系统安全性不高,浏览器兼容性容易影响系统正常运行,应用程序很难或者需要通过其他技术的辅助才能操作客户机的资源,服务器的负载过高而客户机的计算能力没有充分使用,等等。

传统Web Application的诸多缺点已经被业界意识到,这样一种全新的应用系统构架——Rich Internet Application(富互联网应用程序,简称RIA)被提了出来。RIA可以充分利用客户机的计算能力,又不失Web Application那样的部署优点。这里的Rich体现了两个方面的含义:一,用户界面的丰富;二,数据模型的智能。RIA通过在客户机上单独运行一个客户端程序(这个客户端程序有可能独立运行,也可能嵌在浏览器中运行,下文会详细阐述他们的区别),极大的提高了用户界面的丰富表现,可以很容易的和多媒体技术结合,提高了用户体验。由于RIA需要一个独立于服务器的客户端程序,那么和传统Web Application的最大区别就在于,服务器已经成为支持RIA客户端程序正常运行的数据服务,并能为RIA提供复杂的数据处理方式,包括异步的数据传输处理和脱机的数据缓存机制。

我们可以看到RIA实际上是应用系统构架的进化的一个全新设计,从最早的大型主机模型到C/S,到Web Application,再到现在的RIA,是逐步应用系统的部署地域和用户体验的。图1显示了应用系统构架的发展过程:

图1 Rich Internet Application的发展(摘自Adobe Flex:创建企业Rich Internet Application 的表示层解决方案)

一句话,RIA就是把传统Web Application和桌面程序的优点结合在一起,既提供了丰富的客户端体验,又通过网络轻易部署和自由访问Internet的资源。

RIA的概念首先由Macromedia在2004年发布Flex的时候提出,随着Ajax的普及和深入,目前各大开发平台供应商都推出了各自的RIA技术平台,以其在RIA大潮来临的时候,成为主流的开发技术。

同时在网络社区中,对于RIA技术平台应该具备那些条件和特点,也进行了热烈的讨论:

良好的用户体验, 响应速度快和丰富的用户界面
基于互联网的开放标准进行数据传输
运行时快速高效
能整合多种媒体格式
丰富的组件,基于事件驱动,能进行快速开发
支持联机/离线的数据传输
良好的兼容性,能在多种平台下运行
与服务器的交互方式必需首先支持异步的交互
所基于的新的媒体格式必需是基于文本的,这样的格式才可能对于搜索引擎友好
要能够支持增量的呈现(incremental rendering)
要基于动态类型的脚本语言,例如JavaScript或ActionScript,而不是C#这样的静态类型语言
要有90%以上的客户端部署比例。这样才能保证很好的Web可访问性(Web Accessibility)
要有较为强大的开发工具
开发和部署的成本不能太高
UI组件库能够比较方便的做扩展
RIA框架本身能够比较方便的做扩展
这种RIA技术不应该造成对于服务器端技术的厂商锁定

以上前言内容,由于排版和字数的原因,最终没有发布。

在前言完了后,我RIA技术介绍和优缺点中简单介绍了这些技术,并给出使用这些技术开发RIA的优缺点(仅个人观点)。

接着在RIA技术分类和比较中,我给出了如下这个表格:

RIA技术分类 包含的技术 优点 缺点
浏览器

Ajax

基于原有Web技术
与HTML无缝集成
无需学习新技术

把应用程序绑定在浏览器中,受浏览器安全沙箱控制
浏览器的兼容性影响应用程序的开发和运行

浏览器插件

Flex
Laszlo
Silverlight

独立的技术
与HTML部分集成
丰富的界面表现
特定的开发语言和工具
能使用部分在Web开发中的经验

需要下载插件和定制的运行时
运行在浏览器中,受浏览器安全沙箱控制
需要学习新技术

新型桌面

WPF
XUL
AIR
JavaFX

独立完善的技术
特定的开发语言和工具
可独立浏览器运行(也可以运行于浏览器中)
最丰富的界面表现
能方便的访问本地资源
可使用桌面软件开发的技巧

需要安装单独的运行环境
需要学习新技术

从上面的表中,可以看到一个明显的特点,就是Adobe和Microsoft都同时推出在浏览器中运行和独立浏览器运行的RIA开发平台。

在三种分类的技术中,浏览器技术是成为开发RIA最直接的技术。很多人认为Ajax是开发RIA的不二选择,Ajax的潜力还没有完全挖掘出来,使用现有的Web技术(HTML+CSS+JavaScript)完成可以开发出丰富的用户界面。此类技术适合一直在做Web应用的软件开发商选择。

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

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

如何选择适合自己的技术,主要看如下几个方面:

自己目前的技术,和产品的结构
RIA技术供应商的背景
RIA技术学习的成本
RIA技术应用的成本
RIA技术运行的效率
……

最后,RIA技术平台未来市场的发展情况,供应商将会是三国鼎立的局面:Adobe、Microsoft和SUN。Adobe依赖Flex,已经在RIA领域有了很好的基础,最近又推出AIR,把手伸向了桌面系统。Microsoft向来是桌面软件开发的霸主,通过推出WPF来一统Windows和Web界面开发技术,现在又推出Silverlight来和Flex直接竞争,并且Silverlight有很多比Flex先进的特性。SUN依靠Java的基础,以及在移动设备上的JavaME运行时,走开源路线,也会成为一个有力竞争者。总体来说,Microsoft和Adobe是份额最大的供应商,SUN会稍显弱势。另外,Ajax会成为很多一直在做Web Application的软件开发商的首选,其必将成为一个重要的RIA开发技术。

另外,大家有兴趣,可以去买一本来看看。

分享到:




更多