RIA简介
RIA
最近提得比较火了,在前面的博客文章《
意图去Java化的Sun
》中提到的
JavaFX
和
Adobe Flex
、
Adobe AIR
都是属于
RIA
的范畴。那究竟什么
RIA
,
RIA
的现状和将来的发展道路如何,在这里可以简单聒噪两句。
RIA
,英文原文是
Rich Internet Application
,
是旨在提供传统桌面型应用功能的
web
应用。
RIA
通常将用户接口
(UI)
相关的处理操作转换到
web
客户端,但仍将数据保留在后台应用服务器上
(
例如保持应用状态的数据等
)
。
RIA
通常通过以下两种方式运行:
- 运行在浏览器中,并不需要软件安装
- 运行在安全的sandbox环境中(sandbox是安全运行程序的保证机制,例如Applet)
RIA的历史
RIA
的历史可以追述到
2002
年三月一篇由
Macromedia(
现在已被
Adobe
收购
)
所发表的白皮书中。其实在此之前,微软也在
1998
年就写过一篇类似
RIA
的文章、
2000
年
Forrester
研究机构也写过一篇类似的分析报告,现在大家经常看到的“富客户端”
(Rich client)
也是
RIA
发展历程当中的一个重要环节。
传统的
web
应用通过瘦客户端
+
客户机服务器的架构来进行所有的操作。在这样的架构下,所有的处理都是由服务器完成的,客户端只负责展现静态
(HTML)
的内容。这种架构最大的缺点就是什么事情都要通过与服务器的交互来进行处理,也就是需要从客户端将数据发送至
(
请求
)
服务器,服务器再应答,页面即被重载。如果我们能在客户端上使用一些技术来执行一些指令的话,客户端就能减少与服务器的交互次数。
Internet
的标准缓慢向前推进,接受新技术还需要一定的时间,所以现在很难有标准说这个是不是
RIA
的应用。但是所有的
RIA
都有一个共通的特点,即
RIA
引入了中间层级的代码位于用户和服务器之间,通常都被称为“客户端引擎”。客户端引擎作为浏览器的扩展,需要担当描绘用户接口、与服务器通信等任务。
客户端引擎执行的一些应用功能都是应该集中在改善用户接口
(UI)
、提高响应速度等方面。当然,我们在客户端上加上客户端引擎并非要改变浏览器和服务器之间的典型同步模式,
RIA
的客户端引擎执行了附加的与服务器之间的异步通信。
使用RIA的好处
RIA的好处已经很多了,大家都能观察得到,这里并不一一赘述。RIA
部署了一个客户端引擎到最终用户侧,所以
RIA
的应用:
- 更加富有:RIA应用比传统的HTML应用提供了更多的用户接口和行为能力。比如我们现在通常能见到的拖拽、利用滚动条调节数据、使用客户端的数据执行计算功能等。
- 响应性更佳:比起传统的web应用每次操作必须跟远程服务器交互,RIA能够提供更好的响应性。
RIA
的极端复杂情况可达到桌面环境的应用级别。它也带来了很多性能上的优点:
- 客户端/服务器的平衡。Web服务器不必像原来那么忙碌了,客户端和服务器端的计算资源得以平衡。在RIA中,服务器的吞吐量可以达到一个更高的高度。
- 异步通信。客户端引擎能在不需要用户执行与接口交互的动作下(按下按钮、打开链接……)即与服务器进行通信。所以,通过客户端引擎的通信机制,用户可以异步地查看并与页面交互。这样,用户就不需要等待了。也许一部分应用采用了预取数据的机制,即在用户请求之前将用户需要的数据下载下来。Google Map即在用户滚动地图之前就将邻近的地图事先下载到客户端。
- 网络利用率。网络流量也可以大大降低因为客户端引擎已经做了很多事情,不需要和服务器进行交互。客户端引擎也更为智能,知道应该与服务器交换哪些数据。但是在异步调用和预取的设计上也要非常注意,因为有可能这两个部分都有可能增加网络负荷,尤其是这两个部分都是用代码写的,代码并非完全能掌控用户到底下一步要做什么。
RIA缺点
- Sandbox。因为RIA必须运行在sandbox中,所以他们对系统资源的访问必须要受到严格控制。否则,可能会出现一些问题。
- 需要脚本的支持。RIA总是需要诸如JavaScript一类的脚本。如果用户关闭浏览器的动态脚本支持,RIA就不行了。
- 客户端处理的速度。为了实现跨平台的效果,一些RIA使用JavaScript一类的客户端未编译脚本,可能会对性能造成比较大的影响。但是如果使用经过编译的Java、Flash、Curl或者Siliverlight等语言,则性能不会出现太大问题。
- 脚本下载时间。虽然RIA无需安装,但客户端引擎的脚本总需下载。
- 可搜索度降低。目前的搜索引擎还不能很好支持这样的内容。
- 可读性降低。用户有时会感觉不到因为客户端引擎而带来的HTML内容改变。不过WAI-ARIA套件对此提供了解决方案。
- 不可部署性。目前,除了Adobe AIR技术外,别的富客户端应用都不具备像传统桌面应用那样的可部署性。
参考资料下载: