开源技术选型手册-RIA篇章之Flex
[注]本文节选自《开源技术选型手册》的RIA篇章。该书已由电子工业出版社博文视点公司出版。 购买请点击这里:
http://www.china-pub.com/39918感兴趣的朋友也可以从InfoQ中文网找到这本书的精选版:
http://www.infoq.com/cn/minibooks/open-source-tools-choice 综述 随着Web
技术的发展以及Internet
的日益成熟,人们对Web
应用程序的要求日益提高,希望其承载更多的业务逻辑,帮助人们处理日常生活、工作、学习中的一些问题。后续的,随着无线网络的普及,随时随地通过无线网络访问Web
站点将成为一种可能甚至必需。但是因为Web
模型是基于页面的模型,缺少客户端智能机制,所以到目前为止Web
应用程序对完成复杂应用方面始终跟不上步伐,整体的用户体验效果与桌面应用程序仍然有差距。传统的Web
应用程序是基于页面跳转模型的,每一个任务操作由一个或者多个页面组成。典型的,如果某个操作任务是多步骤或者多选项的,那么要么需要一份很长的页面,要么使用分页而让用户在多个页面中跳转。这种处理方式导致用户花费大量的时间在等待页面的跳转和重载刷新,这种缓慢、不自然、混乱的用户体验过程和效果经常让用户感到懊悔和苦恼。另外一方面,传统的Web
应用程序也无法表达复杂的人机交互过程比如游戏,这种人机交互需要在用户行动、快速移动或者情节不断变化的时候在屏幕上不断的反馈。不断的重载刷新页面肯定是一种最糟糕的处理方式了。在这种背景下,RIA
(Rich Internet Application
)的思维和技术逐渐得到了广泛的支持和应用。RIA
结合了桌面应用程序的在数据交互、用户界面表现、数据格式编排等方面的优点,又兼有Web
应用程序的零部署、易于传播等特性,能够有效改善Web
应用程序的人机交互效果,向用户提供更丰富、更具有交互性和响应更快的用户体验。与传统的纯HTML
应用程序相比,RIA
能够提供一个强劲的技术平台,使浏览器客户端的能力往桌面应用程序中的客户端靠近,不仅适合传统的三层乃至N
层的开发过程,同时能够和原有的环境集成以延展原有的应用程序而不需要大规模的伤筋动骨的修改和更新。关联信息Macromedia Flex
是比较成功和有效的RIA
解决方案之一。今天,几乎大部分的浏览器上都安装了Macromedia Flash
的浏览器插件,大量的Web
应用程序都或多或少的嵌入了Flash
的应用。而Macromedia Flex
则是基于Flash
的、一个构建RIA
应用的完整解决方案,其能够使Web
应用程序具备快速反映能力,并在不同状态与显示之间流畅的过渡,提供毫无中断的连续的工作流;由于搭建在Flash
平台上,Flax
在多媒体、视频、流媒体方面有更加突出的表现。更重要的是,Flex
具有基于标准的架构,使用直观的基于XML
的MXML
来定义丰富的用户界面,可以运行于J2EE
和.NET
平台,能够与当前Web
开发工具、方法、设计模式紧密配合。Openlaszlo
则是一个开源的RIA
开发环境。使用Openlaszlo
平台时,开发者只需编写名为LZX
的描述语言(其中整合了XML
和Javascript
),运行在J2EE
应用服务器上的Openlaszlo
平台会将其编译成SWF
格式的文件并传输给客户端展示。从这点上来说,Openlaszlo
的本质和Flex
是一样的。Flash
是任何浏览器都支持的展示形式,从而一举解决了浏览器之间的移植问题。而且,在未来的计划中,Openlaszlo
还可以将LZX
编译成Java
或.NET
本地代码,从而大大提高运行效率。与Macromedia Flex
不同,Ajax
则是基于Javascript
客户端脚本、XMLHttp
对象、XML
、XHTML/HTML
和CSS
等传统Web
开发技术的另外一个RIA
解决方案,其更强调基于纯数据的异步交互模式。2005
年2
月,Adaptive Path
公司的Jesse James Garrett
在其“Ajax:A New Approach to Web Application
”( http://www.adaptivepath.com/publications/essays/archives/000385.php )一文中首次提出Ajax
概念,极力向Web
开发人员推荐这种综合使用Javascript
、XHTML
和CSS
、DOM
、XMLHttpRequest
、XML
和XSLT
的技术。与很多开发人员一样,Garrett
一直非常羡慕桌面应用程序在用户界面表现、人机交互、数据传输等方面的强大表现力,一直在寻求能够缩小Web
应用程序在用户体验方面与桌面应用程序的巨大差距的解决方法。由于Google
在Gmail
、GMap
、Google Suggest
等站点的成功运用,Garrett
相信Ajax
就是其一直在寻找的宝贝。原来的Ajax
有一个冗长的名字:异步的Javascript
、CSS
、DOM
和XMLHttpRequest
(Asynchronous Javascript+CSS+DOM+XMLHttpRequest
)。Garrett
扮演了“临门一脚”的角色,形象的称之为Ajax
,即Asynchronous JavaScript and XML
(异步JavaScript
和XML
)的缩写,这个形象简短的名字概括了这种技术的特点。Ajax
已经引起的全世界的广泛关注和应用,而且,Prototype
、Dojo
、DWR
等Ajax
框架已经给Web
应用开发领域带来了实实在在的贡献和影响。Bindows
也是用Javascript
和DHTML
开发的Web
窗体框架。Javascript
用于客户端界面的显示和处理,XMLHTTP
用于客户端与服务器的信息传输。Javascript
在客户端的表现力不容置疑,利用Javascript
几乎可以实现Windows
应用程序所能干的大部分事情,XMLHTTP
一直以来常被用于实现"
无刷新"
的Web
页面,它和 Javascript
配合,可以完成数据从服务器和客户端的传输。Bindows
的一个主要的缺点是它采用一次全部载入的方式来实现脚本库,在窗口的加载期,需要一个漫长的等待过程,甚至浏览器的进程会产生无响应的情况。这点Bindows
根本没有遵循"
用多少取多少"
的准则。另外,内部大量利用了IE6
的技术,没有考虑到非IE
的浏览器,限制了Bindows
的流行。在接下来的内容里,我们选取Flex
和OpenLaszlo
两个比较典型、相对成熟的RIA
解决方案,探讨如何构建RIA
应用程序。Adobe FLEX总评(Rank)上手容易程度
| ★★★★★
|
社区活跃度
| ★★★★★
|
应用广泛性
| ★★★★★
|
推荐指数
| ★★★★★
|
作为支持RIA
的开发、部署一系列发展中的技术和产品线,Adobe Flex
是Adobe
在Flash
基础上面向业界提供的RIA
解决方案,其中包括Adobe Flex SDK
、Adobe Flex Builder
、Adobe Flex Data Services
和Adobe Flex Charting
等等。Flex
向开发者提供一个熟悉的编程模型和一整套的产品和组件,使开发者能够充分发挥Adobe Flash Player9
的优势,充分发挥Adobe Flash Player 9
的优势,无缝扩展浏览器的性能,构建高性能、拥有绝佳用户体验效果的RIA
应用程序,并且无缝的与ASP
、JSP
、PHP
、ASP.NET
等主流后台语言和架构集成。功能和特点(Highlights & Features)Flex
包含一系列可供设计、开发、部署的相关产品,包括:lAdobe Flex 2 SDK (Software Development Kit)
lAdobe Flex Builder 2
lAdobe Flex Data Services 2
lAdobe Flex Charting 2
作为Adobe Flash
技术的承续和发展,Flex
采用GUI
界面开发,使用基于XML
的MXML
语言,并提供多种组件,可以实现Web Services
远程调用、远程对象访问、页面组件拖拽、数据网格、图标等等,并内建了动画效果和其他互动机制。相对于基于HTML
的应用(比如纯JSP
、ASP
、PHT
或者ASP.NET
)在每个请求时都需要执行服务器的脚本,由于客户端只需要载入一次,Flex
应用程序的工作流被大大改善了,更加适合于构建快速、具有动画效果、具备良好用户体验效果的RIA
应用程序。Flex
试图通过提供一个程序员们已经熟知的工作流和编程模型,让程序员比以前更快更简单的开发动画和RIA
应用程序。其能够与其他Web
技术比如Java
、.NET
等有效的融合在一起,改善Web
应用程序在视图层的表现能力,同时利用Flex
的语言和文件结构把应用程序的逻辑从设计中分离出来。在UI
方面,Flex
提供了包括控制组件、版面、导航、图表等在内的各个类别的丰富的组件,用于帮助开发者基于所见即所得的IDE
快速构建 Flex
应用程序。背景介绍(Background & History)蔡学镛先生在其《Flash
平台的挑战》一文中将1990-2010
这20
年来软件开发的Framework/API
划分为5
个阶段:l第一阶段:GUI
和逻辑混在一起,不管客户端还是服务器端都是一样,比如MFC
、Java Swing
和Servlet
。l第二阶段:这个阶段中,服务器端的GUI
和逻辑分开,比如ASP.NET
和JSP
。l第三阶段:在这个阶段,Web
客户端的互动性增强,比如ASP.NET
和Ajax
。l第四阶段:RIA
时代,客户端具有更好的互动性,并且客户端的GUI
和逻辑分开,且GUI
改用宣告的方式构建。RIA
的应用搭配VM
或者浏览器插件,在浏览器内或者浏览器外都可以执行,比如Adobe
的Apollo
或者微软的WPF
。l第五阶段:即RIA
和DSL
(Domain Specific Language
)时代,DSL
语言取代大部分的XML
。就目前而言,以Flex
为代表的RIA
解决方案越来越成熟,一些以视频共享、日程编排等为代表性的RIA
站点也向其用户展示了RIA
应用程序的魅力。事实证明,RIA
正越来越受到重视,传统的Web
应用程序也正在向RIA
靠近。作为老牌的多媒体解决方案供应商,Adobe
在RIA
解决方案上有独特的优势。Flash
已经被整个业界所接受,并且得到了基本上所有主流浏览器的支持。因此,相比其他RIA
解决方案,基于Flash
的Flex
推广起来自然容易得多了。最近,Adobe
在其官方网站上宣布将把Flex
开源,将几乎整个Fle
平台组件在Mozilla Public License
协议下发布,这其中包括以下几个部分:lFlex
编译器lFlex
命令行调试工具l源码查看工具l测试框架lFlex
核心组件库,包括Apollo
组件l封装脚本lFlex-Ajax Bridge
(将会改用MPL
协议发布)随着越来越多的软件产品走入开源模式,事实证明开源对于产品的发展和开发者来说是双赢的。我们有理由相信,随着Flex
的开源,Flex
开发者和爱好者可以通过阅读研究Flex
的源码,更深入的理解Flex
并进一步增强它,从而利用Flex
开发出更多更出色的RIA
应用程序。而对于Flex
产品本身来说,更多开发者的加入,能够让其拥有广泛的用户群体,并且利用最小的成本得到最佳的完善和发展,加速Flex
的普及。原文出处:
http://www.blogjava.net/eamoi/archive/2008/08/01/219341.html| 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。 |