PART 1 开启Flex之门
第1章 Flex 3程序设计基础
1.1 RIA概述
Internet已经是我们生活的一部分,而“看网页”可以说是网络浏览者与Internet最简单的沟通方式。打开浏览器,进入一个网站浏览,这就是浏览者们看到的最直观的Internet的外表。尽管页面上不是单一的文字,但也仅仅是“页”。然而如今这些传统的呆板的“页”已经不再能满足网络浏览者的要求了。多媒体、多元化的信息表现在一个页面上,的确很是单薄。
另一方面,开发人员也一直在为过分依赖于页面刷新、请求响应等诸多传统网页开发技术固有的问题而烦恼。当然我们不能忽略B/s架构能够取代C/s长期大行其道有一个重要的因素,就是网络带宽问题。
传统网页内容简单,节省网络带宽的优势是与生俱来的,而如今网络技术在不断地发展,软硬件发展又达到了一个并驾齐驱的时期,软件系统已经不需要等待硬件的发展而发展。有了强烈的需求,又有了充足的硬件基础,新技术应运而生,Rich InternetApplication(RIA)的出现给网络浏览者和开发人员都带来了全新的体验。
Rich Internet.Application即是富因特网应用程序,其特点也体现在一个“富”字上,传统的HTML页面带给用户的页面元素是极其有限的,输入框、选择框、下拉框等无法替换的元素,恐怕早就对浏览者带来了审美疲劳,更何况在功能上也存在着很大不足。对比传统页面,RIA的界面是“富”的,基本上一个桌面程序能表现出来的效果,RIA都能表现。
图1.1中的网站是一个名为scrapblog的博客网站,与我们常见到的博客网站不同,这个网站使用一种RIA技术构建,在页面表现力和交互性上都远远超过了常见的博客网页。
如果说RIA的优势仅仅是丰富的界面表现能力的话,那么大家会认为这不过就是个C/S架构,RIA的另一大特点也正是与c/S架构最大的不同:数据上的“富”。传统的网页开发基于HTTP协议,数据的交互依赖于请求/响应机制;界面的交互则需要进行页面的跳转和刷新。RIA的处理则有很大不同,在客户端可以进行完整的数据处理,与用户的交互更加友好、更加迅速;界面交互并不依赖页面,消息通过异步请求传递,面向用户界面中的各个小模块,客户端的模块之问关系清晰,处理起来更加灵活。
对于企业级应用来说,RIA技术并不需要替换掉现有的体系结构模型,如IavaEE(一以前称12EEl、.NET架构等。RIA技术通常可以和企业级应用体系结构很好地进行整合。将原有的系统构建成更易用、更直观、更迅速的“网页应用程序”。在不会影响到原有应用的前提下,RIA技术对表现层进行了大幅度的增强,进一步提升界面的友好程度,并且减少了用户与系统的远程交互频率,减少了带宽需求。
RIA开发技术已经有很多种,Adobe公司的Flex发展目趋成熟,微软公司的Silver[,ight及Sun公司的IavaFX也崭露头角。Flex技术的优势得天独厚,有强大的Flash平台作后盾,SilverIAght和IavaFX在RIA的实现上则各有侧重,Silver[,ight作为一个浏览器插件支持广泛,而且对于IavaScript和微软的.NET技术无缝结合,而IavaFX体系不仅希望利用编写更容易的lavaFX Script取代lavaScript,更是提供了JavaFX Mobile,为手机及移动设备增加了应用程序支持。
1.2 Flex简介
Flex是一种基于标准编程模型的高效RIA开发产品集,最初由Macromedia公司在2004年发布,后被Adobe公司冠以商标。Flex最大的特点是基于全球流行的网络动画平台——Macromedia Flash。2000年以来,Flash动画愈发火爆,“闪客”们的作品为Internet增添了绚丽的色彩,而Flash的播放器Flash Player。已经成为浏览器上首选的不可或缺的插件,为了看到页面中生动的Flash动画,大部分浏览者都会安装Flash Player。通过Flex技术,开发人员可以将RIA程序编译成为Flash文件,为Flash Player所接受,也就是说,Flex技术所开发出来的程序对于大部分浏览者而言并不需要安装额外的客户端支持,这是一个得天独厚的优势。
“基于标准编程模型的高效RIA开发产品集”,这是Adobe公司对Flex技术的官方定义。下面我们就来进行详细的分析。
一个完整的Flex程序由MXML代码和ActionScript代码组成。MXML基于XML标准,用于配置和设计Flex程序的界面及编写表现层数据模型;ActionScript基于ECMAScript,原来用于设计Flash动画,其语法规范类似于IavaScript,,这样两种基于W3C标准的开发语言就构成了Flex程序,两种语言的关系类似于HTML和JavaScript,这样一来(尤其对于传统网页开发者来说1,Flex根本没有什么门槛。
Flex 3是Flex的一个成熟版本,它的产品集包含以下几部分。
……
1.4 ActionScript
ActoonScript是为Adobe Flash设计的面向对象的程序设计语言,在Flex开发中,ActionScript的基本作用类似于传统网页开发中的JavaScript,同时ActionScript还要负责Flex程序的逻辑控制和业务建模。ActionScript遵循欧洲计算机制造商协会(EcMA)通过的ECMAScript标准,而ECMAScript出自JavaScript派生出的标准ECMA.262,因此无论是使用语法还是技巧方面,ActionScript与JavaScript都非常相似。
作为Flex技术的组成部分,ActionScript充当着更加重要的角色。如果说MXML是F1ex亮丽的外表,那么ActionScipt就赋予了Flex聪慧的灵魂。对于开发者而言,在ActionScriDt上所下的功夫要大于MXML,MXML作为界面表现层需要更多的是外观设计,而ActionScriDt则需要担当起用户交互、数据处理和业务逻辑处理的重任。不仅如此,在MXML中所使用的Panel、Label等Flex内建组件都是基于ActionScript类实现的,应用ActionScript可以继承这些内建的组件对象来创建自定义的Flex组件,使得开发的灵活性大大增加。
ActionScript的应用还可以涉及到表现层数据模型以及异步远程请求及响应的事务处理。
我们可以通过标签在MXML文件中插入ActionScript代码或导入ActionScript类文件。而在编译过程中,ActionScript代码和MXML代码都会被分离成ActionScript类,最终编译器连接所有的ActionScript类,编译生成SWF文件。
展开
——中国数码Web研发主管 孙雷
杨占坡是我多年的朋友,对技术极具天赋和热情。他的开发经验从Web应用到IDE开发,从嵌入式系统到Web RIA应用。这本书不是通常的技术手册,而是具有货真价实的可操作性!在当前Flex已经越来越多地被国际大公司应用于大型系统中的形势下,相信占坡领衔的这本书会给真正想将Flex用于实际项目的朋友提供非常好的参考。
——IBM(中国)资深系统架构师 张琦
杨占坡我认识的时间不长,但是印象非常深刻。他是位出色的工程师和架构师,敢于创新,敢于挑战权威,敢于打硬仗,而且每次出手都能证明自己的价值。我作为Silverlight体系的参与开发者和拥护者,与他的交流中得到了很多东西,毋庸置疑,Flex仍然是微软在RIA领域最强劲的竞争对手,我们希望对手更强大,以推动技术发展!
——微软(爱尔兰)高级软件架构师 曹刚
Flex为企业应用以及互联网多媒体应用提供一个现时最为成熟,功能齐备的解决方案,强大的数据整合能力能够高效经济地利用企业已有的业务系统,结合网络Web资源,创建出丰富多彩的各式应用。Flex技术的应用在国内正逐渐受到关注和重视,但是在目前已有的图书资料中,基本上都是在说明一些概念性内容和IDE的使用,并没有真正深入Flex核心应用,而本书具有卓尔不群的实用价值,字里行间充斥着一目了然的开发经验,相信这本书可以成为你精通Flex的踏脚石。
——cnflex.org站长 劳伟峰