上个月,给《软件世界》投了个稿。主要讨论了在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技术 |
把应用程序绑定在浏览器中,受浏览器安全沙箱控制 |
浏览器插件 |
Flex |
独立的技术 |
需要下载插件和定制的运行时 |
新型桌面 |
WPF |
独立完善的技术 |
需要安装单独的运行环境 |
从上面的表中,可以看到一个明显的特点,就是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开发技术。
另外,大家有兴趣,可以去买一本来看看。
分享到:
更多