JavaScript库,ICEfaces,Adobe公司的Flash,微软Silverlight,现在还有HTML5,全球性的网络支配地位的竞争已经进入了GM基地崭新的时代——一个富网络应用(简称RIA,中文也有叫富互联网应用)的时代。 本文目的是界定什么是RIA,解释为何网络已经开始向RIA靠拢,探索今天已经存在的不同RIA框架,对每个框架作出一些优点和缺点的概述,并讨论这些新技术在未来将是怎么样的生存态。 RIA是何物? 所谓RIA,或者说富网络网应用,就是指可以像桌面程序一样操作的网络应用。 在RIA冒出来之前,大多数的网络应用都是静态的页面构建的。 Sumo Paint 是一个基于Flash的RIA, 具有像Photoshop一样的图形编辑功能。 跟桌面应用程序不同,http://www.ie173.com 任何一个网页的互动往往需要重新加载一个全新的页面。而桌面应用程序,在另一方面,有很多更好的用户交互性,因为所有处理都是在用户的机器本身,所以能给以更加无缝的用户体验。 因此,软件开发商开始问自己,“我们产品应该是一个桌面应用程序还是一个Web应用程序呢?” 这一直是一个公平的问题,因为这两种类型的应用程序都具有各自优点和缺点。 桌面应用程序具有流畅的用户交互性,但软件是售出去的,会遇到发布和更新的问题。 Web应用程序,另一方面,很容易从网上获得,摆脱相关的软件发布和更新的问题,但在用户交互性体验非常差。 因此,怎么样才能两全其美呢? RIA就是两全其美。 RIA通过网络发布,有非常丰富的用户交互。得益于Ajax的出现,一个无需刷新就可以发送服务器请求的网络应用的方法,新技术出现,加入了RIA的运动。 基于这些技术出现了一些框架,帮助开发人员构建和部署富网络应用程序,如JavaScript库,ICEfaces,Adobe Flash 4(Flex 3前身),微软Silverlight,以及HTML5的。 让我们来一个个探讨RIA的框架。 网络应用的JavaScript库 JavaScript库,例如 jQuery和MooTools 是首批技术之一,可以真正的帮助部署流畅和互动的富网络应用。它们提供通过杠杆客户端脚本来处理前端接口功能的RIA框架。它们是一些基本的Javascript文件,由一些有用的,经过跨浏览器测试功能的集成。可以使用Ajax,以及处理普通的基于用户驱动事件的交互,如显示和隐藏内容。 目前最流行的有jQuery(尤其是使用jQuery UI),MooTools,YIU(雅虎用户界面库),以及EXTJS。这些库包括RIA组件,如网格,图表和复杂的表单元素,以及处理Ajax的工具。最引人入胜的是,大部分网络开发的JavaScript库都是开源的。 如果你不想购买一个集成开发环境(IDE),但仍希望在自己的网站绚丽而专业的RIA功能,JavaScript库是一个很不错的选择。 使用JavaScript库的网站有Google,Digg,雅虎,亚马逊,微软,Twitter,以及Best Buy。 ICEfaces ICEfaces是标准的JavaServer Faces(JSF)的框架的扩展,旨在去除方程中的JavaScript从而简化程序员的工作流程。换句话说,ICEfaces通过Java应用接口为你处理了所有的JavaScript / Ajax。通过删除这些自定义JavaScript函数的复杂引入,大大简化了创建富网络应用的任务。 如果你的团队主要成员是Java开发人员,或者如果你的网络应用程序不需要其它ICEfaces没有的复杂组件,又或者如果你的网络应用程序是事件驱动的, 那么使用ICEfaces是很好的选择。如果你的网路应用是事件驱动的,请确定你已经了解ICEfaces不提供真正的“服务器推”技术的, HTML5, Flash Builder 4和Silverlight都支持的。不过,相应地ICEfaces使用长轮询的方法来模拟服务器推技术。 使用ICEfaces的网站有波音,美国航空航天局,联合太平洋公司,T - Mobile,以及美国银行。 Adobe Flash Builder 4 Flash已经出现了很长一段时间,但是用使用Flash来构建整个网络应用十分麻烦,直到Flex的引进,这是Flash的一个扩展,提供RIA网络组件。 Adobe Flash Builder 4最令人兴奋的是它的跨平台和跨浏览器特性,允许程序在所有的操作系统和所有的浏览器上以同样的方式运行。相比于JavaScript,浏览器有不同的JavaScript引擎管理和处理的代码,而Adobe的Flash只有一个引擎,用户通过Adobe Flash浏览器插件来安装(通常的情况是他们有了)。 Flash Builder 4 应用之所以能如此,因为它们已经嵌入到HTML页面,这意味着浏览器本身并没有对应用程序的性能有什么影响。这意味着你如果你乐意, 你还可以在IE6上运行最复杂的网络应用程序。(这当然简单,因为Flash插件/引擎经常会更新,因此只是稍微依赖于用户插件的版本)。 这些应用通常是伴随着服务器端处理,比如一个Java后端处理,而且需要Flash Builder 4IDE做开发。 如果你的团队主要是Java开发(因为搭配Java运作良好),或者你的应用程序使用事件驱动的构架,可以选择Adobe Flash Builder 4。 使用Flash作为网络应用程序的网站有Mint.com,Flickr和Hyundai。 Silverlight Silverlight是基本上微软版本的Adobe Flex /的Adobe Flash。现在已获得了一些吸引力,但似乎并没有达到的Adobe Flash的普及程度。 Silverlight应用程序明显约束于.NET的后端,因为它是微软的产品。这意味着,你不得不 Silverlight /.NET 和Adobe Flex / [一些服务器端脚本,如PHP] 之间整合考虑。 如果你的网络应用需要复杂的图形,或者如果你的团队主要是.NET开发人员,又或者如果你的应用程序使用事件驱动的架构,那你可以选择Silverlight。 使用Silverlight的网站,如Netflix。 HTML5 HTML5的是RIA运动中的最新发展。 HTML5,在本质上是HTML4,JavaScript,CSS,Javascript代码库以及Falsh的最优合并,利用API模型成为一个单一规范。 HTML5的是一个开放的技术,这意味着不会有单一的主管团体如Flash的Adobe或Silverlight的微软。 由于HTML5规范还没有完成,IE9尚未发布,要建立产品级的网络应用,你还需要等待一点点时间。 目前,所有主要浏览器除了IE8都支持HTML5。由于IE8的浏览器市场占据了主要部分,在IE9发布之前,HTML5实在难以成为主流。 一旦HTML5得到广泛支持,如果你不想购买和学习的IDE(像Flex和Silverlight框架所必需的),如果你的应用程序使用事件驱动架构,或者如果你喜欢使用内置的HTML功能和JavaScript API 功能而不是使用第三方JavaScript库,那么使用HTML是很好的选择。 尽管HTML5中可以很好地处理图形,但是使用Flash和Silverlight来处理复杂图形和动画在目前仍然容易/更快的选择。 RIA 的未来 HTML5应用程序是互联网的未来吗?不完全是。只要那些创造性和创新性的网络开发人员还在不断的去创造一些特别的东西,就会总是出现一些新技术可以造出些HTML5或其他任何网络技术无法完成的神奇的东西。 JavaScript库,ICEfaces,Flash,Silverlight和HTML5的存在首要原因是其创造力和创新性。未来的网络将会由许多共存的技术组成,就像现在。