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