1.4 Ajax的替代方案
市场需要基于Web的应用表现能力更加丰富,响应更加灵敏,Ajax满足了这种需求,而且无需在客户端安装任何额外的软件。但是这一领域并非只有一个竞争者,在某些情况下,它甚至并不是最合适的选择。下面我们简要地描述一下主要的替代方案。
1.4.1 基于Macromedia Flash的方案
Macromedia的Flash是一种采用压缩的矢量图形格式来播放交互式电影的系统。Flash电影是一种流媒体格式,也就是说,可以一边下载一边播放,而不用等到媒体的所有字节全部都下载到本地之后再播放。Flash电影是交互式的,它使用ActionScript来编程(ActionScript是JavaScript的一种近亲[17]。它也提供了一些对输入表单UI组件的支持。Flash可以应用于从交互游戏到复杂商业应用的用户界面的广阔领域。Flash有非常棒的矢量图形支持,而在相对应的Ajax技术领域中,这部分则是完全空白的[18]。
Flash作为一种浏览器插件,已经存在了很长的时间。通常来说,依赖浏览器的插件并不是一个好主意,但是对于Flash则不然,主流浏览器的安装包中已经包含了它。而且,它也能跨越Windows、Mac OS X以及Linux三大主流的桌面操作系统平台(而且在Linux上的安装文件还要比其他平台小一些)。
如果你打算使用Flash来创建富客户端应用,可以从Macromedia的Flex和开源代码的Laszlo中进行选择,两者都是很有趣的技术,它们都提供了简化的服务器端框架用来生成基于Flash的用户界面,都在服务器端采用了Java/J2EE平台。另外,如果你还想要使用更低层次的功能来动态地创建Flash电影,一些工具包(例如PHP的libswf模块)可以为你提供这方面的核心功能。
1.4.2 Java Web Start及其相关技术
Java Web Start是把基于Java的Web应用打包保存在Web服务器上的规约。通过一个在桌面电脑上运行的Web Start过程,可以自动完成应用的查找、下载和运行。在一个可以启动Web Start过程[19]的浏览器中,只需要点击一个超链接就可以无缝地访问这些应用。Web Start已经整合进了最近发布的Java运行环境,在IE和Mozilla浏览器中,安装过程会自动打开这个特性。
一旦Web Start应用下载完毕,它就被存储在文件系统的一个受控的“沙箱”之中,如果服务器上有了应用的新版本,它还能够自动更新。这使得当网络连接中断的时候,它仍然能够继续运行,而且因为它是存储在本地的,即使是一个几兆字节大小的重型应用,重新加载时也不会产生网络负载。应用本身包含数字签名[20],用户可以选择打开全部访问权限,允许应用访问文件系统、网络端口以及其他的本地资源。
传统Web Start应用的用户界面使用Java的Swing UI组件工具包来开发。对于Swing一直是褒贬不一,正反双方都有着强大的理由。除此之外,也可以使用建造IBM的Eclipse平台的SWT UI组件工具包来开发,只是需要多做一点额外的工作。
微软的.NET平台也提供了类似的功能,称为No Touch Deployment,它承诺会提供易于部署、丰富的用户界面以及安全性等类似的功能。
这两种技术的主要问题在于,它们都需要预先安装一个运行环境。当然,所有的富客户端都需要一个运行环境。对于Flash和Ajax来说,它们的运行环境是早已经部署好了,而且普遍存在。Ajax的运行环境就是浏览器本身。Java和.NET的运行环境则大大受限于它们目前的发行情况[21],而对于一个公共的Web服务来说,这是不能依赖的[22]。







