




已阅读5页,还剩55页未读, 继续免费阅读
(计算机应用技术专业论文)cairngorm框架在flex开发中的应用研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中文摘要 摘要 为了能处理更复杂的多媒体应用,改善用户的交互体验,出现了一种新型的 i n t e m e t 应用程序,即丰富互联网应用程序( r i a :r i c hi n t e m e ta p p l i c a t i o n ) 。在 众多r i a 开发技术中,a d o b ef l e x 凭借其完善、强大的功能受到广泛应用。f l e x 是 专注于表现层开发的一系列技术及产品的解决方案。尽管f l e x 使用w e b 程序员熟悉 的工作流和编程模型来提高开发效率,但在大型复杂项目的开发中也存在开发低 效与可维护性差等问题。为此,著名的软件厂商a d o b e 公司推荐使用c a i m g o r m 开 发框架辅助f l e x 开发。 c a i m g o r m 是由a d o b e 公司支持并推荐的基于m v c 模式的开源框架。该框架提 供了一套f l e x 应用程序开发骨架而并非服务来提高f l e x 程序的扩展性和可维护性。 但c a i m g o r m 框架存在结构复杂不易理解、对程序侵入性高不易于移植等不足。为 了改善该框架中存在的问题,本文在对c a i m g o r m 框架详细分析与研究的基础上, 主要做了如下几个方面的工作: 重点分析t c a i m g o r m 框架的特点及技术背景,包括观察者设计模式、事 件流机制和数据绑定技术等。同时也分析了该框架各层的实现原理和影响 开发效率的因素。 针对c a i r n g o r m 框架存在的不足,对c a i m g o r m 框架中的控制层、命令类 ( c o m m a n d ) 和值对象( v a l u e o b j e e t ) 进行了改进。以提高控制层的控制处理 能力、增加多动作处理方式与反射机制,并在数据对象中添加了数据验证 功能,从而使改进后的框架具有轻量级、低侵入和易于使用的特点。 将改进后的框架应用于f s t o p 开源项目中,并对程序的移植性、框架的开 发效率进行了测试。测试结果表明,改进后的框架在开发流程、处理模式、 耦合性能及可移植性等方面与c a i m g o r m 相比具有了一定的改善和提高。 关键词: c air n g o r m 框架;f l e x ;r i a ;设计模式;开发框架 英文摘要 a b s tr a c t i no r d e rt op r o c e s sam o r ec o m p l e xm u l t i m e d i aa p p l i c a t i o na n di m p r o v eu s e r s i n t e r a c t i v ee x p e r i e n c e ,an e wi n t e m e ta p p l i c a t i o nc a l l e dr i a ( r i c hi n t e r a c ta p p l i c a t i o n ) h a sc o m e i nt h en u m e r o u sr i ad e v d o p m e n tt e c h n o l o g i e s ,a d o b ef l e xw h i c hi s c a p a b l ei sw i d e s p r e a d a l t h o u g ha p p l y i n gi t s e l ft ow e bd e v e l o p e rb yf a m i l i a rw o r k f l o wa n dp r o g r a m m i n gm o d e l sf o re f f i c i e n c y , f l e xs t i l lh a sl o we f f i c i e n c yi s s u e si n c o m p l e xs y s t e md e v e l o p m e n to rl o wm a i n t e n a n c e t os o l v et h e s ei s s u e s ,a d o b e r e c o m m e n d su s i n gc a i m g o r md e v e l o p m e n tf r a m e w o r kt of o c u sd e v e l o p e r s a t t e n t i o n o nd e v e l o p m e n to f b u s i n e s sl o g i cb u tc o d e c a i m g o r mi sa no p e nm i c r o a r c h i t e c t u r em v cf r a m e w o r k i tp r o v i d e sas e r i e so f s k e l e t o n sb u ts e r v i c e st oi m p r o v ee x t e n s i o na n dm a i n t e n a n c eo fp r o g r a m b u tn oo n ei s p e r f e c t c a i r n g o r ma l s oh a sd i s a d v a n t a g e sa sc o m p l e x s t r u c t u r ea n dh i g hi n v a s i o n i n o r d e rt oo v e r c o m et h e s ed i s a d v a n t a g e si nf r a m e w o r k , t h et h e s i sp r e s e n t sa ni m p r o v e d f r a m e w o r k 1 1 1 ek e y sa r ea sf o l l o w s : i tf o r m sa n a l y s i so ft h et e c h n i c a lb a c k g r o u n do ft h ec a i m g o r mf r a m e w o r k :t h e o b s e r v e rd e s i g np a t t e r n ,e v e n tf l o wm e c h a n i s ma n dd a t ab i n d i n gt e c h n o l o g y a tt h es a l n et i m e ,i tr e s e a r c h e sc a i m g o r mc o d et of i n dt h ec r u x 夺c o n t r a r yt ot h ef a u l to fc a i m g o r m ,i tp u t sf o r w a r d 丽mc o n t r o ll a y e r , c o m m a n da n dv a l u eo b j e c t e n f o r c e dc o n t r o l l e rc a p a b i l i t y ;m u l t i a c t i o n d e a l i n gr e f l e c t i o nm e c h a n i s ma n dv a l u eo b j e c tv a l i d a t ef e a t u r e s t h e r e f o r ei t i m p l e m e n t sl i g h t ,l o wi n v a s i o na n de a s yu s ef o rt h ef r a m e w o r k 夺i tu s e st h ei m p r o v e df r a m e w o r ki naw e ba p p l i c a t i o no ff s t o p ,a n dc o n d u c t sa c o m p a r a t i v et e s ti n t h ep o r t a b i l i t ya n dd e v e l o p m e n te f f i c i e n c y t h er e s u l t i n d i c a t e st h a tt h eo p t i m i z e df r a m e w o r k , c o m p a r e dw i mc a i m g o r m ,h a sc e r t a i n i m p r o v e m e n ta n de n h a n c e m e n to ne v e n tc o n t r o lm e c h a n i s m ,p r o c e s s i n g p a t t e r n ,l o w - i n v a s i o na n dp o r t a b i l i t yc o n t r a s t e dt oc a i m g o r m k e yw o r d s :c a i r n g o r m ;f l e x ;r i a ;d e s i g np a t t e r n ;f r a m e w o r k 大连海事大学学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明:本论文是在导师的指导下,独立进行研究工作所取得的成果, 撰写成博硕士学位论文竺麴g q 墅框塞在e ! 丛珏蕉主的廑眉硒窥:。除论文 中已经注明引用的内容外,对论文的研究做出重要贡献的个人和集体,均已在文 中以明确方式标明。本论文中不包含任何未加明确注明的其他个人或集体已经公 开发表或未公开发表的成果。本声明的法律责任由本人承担。 学位论文作者签名:王杰銎盔、 学位论文版权使用授权书 本学位论文作者及指导教师完全了解大连海事大学有关保留、使用研究生学 位论文的规定,即:大连海事大学有权保留并向国家有关部门或机构送交学位论 文的复印件和电子版,允许论文被查阅和借阅。本人授权大连海事大学可以将本 学位论文的全部或部分内容编入有关数据库进行检索,也可采用影印、缩印或扫 描等复制手段保存和汇编学位论文。同意将本学位论文收录到中国优秀博硕士 学位论文全文数据库( 中国学术期刊( 光盘版) 电子杂志社) 、中国学位论 文全文数据库( 中国科学技术信息研究所) 等数据库中,并以电子出版物形式 出版发行和提供信息服务。保密的论文在解密后遵守此规定。 糍:至诋名:乞f 叩、_,、i,vq、-,1 日期:弋夕d1 年月啄日。 c a i m g o r m 框架在f l e x 开发中的应用研究 第1 章绪论 1 1 论文的研究背景 随着w e b 2 0 的兴起,w e b 开发技术的发展也是一日千里。最初的网站只能使用 h t m l 来编写,只能进行简单的图文信息传播,与客户端缺乏互动性。为了解决这 些问题,m i c r o s o f t 、s u n 等公司相继推出了a s p 、p h p 、j s p 等开发技术,大大地 提高了网站开发效率和质量。但传统的w e b 应用程序的表现形式是完全基于h t m l 页面之上的,由于h t m l 在早期完全被设计用于文本呈现,面对现在多媒体环境、 即时性响应的网络表现,以渐渐显示出效率低下的、浏览器限制难以绘制丰富强 大的图形界面等问题【1 2 】。这就是被m a c r o m e d i a 公司称之为“体验问题 。2 0 0 3 年3 月,m a c r o m e d i a 公司提出一种被称为富互联网应用r i a ( r i c hi n t 睨 n e t a p p l i c a t i o n ) 的、具有高度互动性和丰富用户体验的网络应用程序概念。 在r i a 出现之前,w e b 开发人员一直希望构建一种超越传统h t m l 的网络客户 端,这样的客户端l i , h t m l 客户端更加健壮、反应更加灵敏和更具有令人感兴趣的 可视化特性。r i a 的出现无疑打破了传统基于浏览器网页的架构。相比于当前主流 的j 2 e e 、n e t 的w e b 开发领域,r i a 结合了桌面应用程序的反应快、交互性强的优 点与w e b 应用程序的传播范围广及容易传播的特性。这种程序具有互动用户界面; 在无刷新页面之下提供快捷的界面响应时间;提供通用的用户界面特性以及离线 操作能力;立即部署、跨平台、采用逐步下载检索内容和数据以及可以充分利用 被广泛采纳的互联网标准;提供拖动释放能力等特点。目前常见的r i a 具体技术 体现是j a v aa p p l e t 、a j a x 、s i l v e r l i g h t 、f l e x 等。 无论将来r i a 是否能够完全代替h t m l 应用系统,对于那些采用c s 架构的胖 客户端技术运行的复杂应用系统和采用基于b s 架构的瘦客户端技术部署的w e b 应 用系统来说,r i a 确实提供了一种高效合理的选择。从目前r i a 的普及情况来看, 离“r i a 时代 还有很远的一段距离。当前以及在未来的一段时间内,传统的w e b 应用程序和r i a 应该将会一直共存。 1 2fle x 与c air n g o r m 框架的研究现状 第1 章绪论 目前实现r 认的主流技术是a j a x 和f l e x 。a j a x ( a s y n c h m n o u sj a v a s c r i p ta n dx m l ) 技术基于j a v a s c r i p t 技术,是目前w e b 2 0 技术浪潮的主要代表,被大量应用于j 2 e e 与n e t 开发中,然而j a v a s c r i p t 对不同的浏览器支持没有统一的标准,而且调试困 难,这些极大地限制了a j a x 的应用范围;f l e x 技术是基于f l a s h 、运行于a d o b ef l a s h p l a y e 环境。应用f l e x 技术设计的r i a 的表现力、交互性能达到桌面应用系统水平, 而且具有跨平台性的f l a s hp l a y e r p , 被9 8 以上的桌面系统的浏览器安装作为前台 的r i a ,以满足用户更为直观和极具交互性的在线体验。因此,f l e x 技术在表现力、 交互性、跨平台性以及与应用服务器的通信方面均超越了a j a x 技术。可以说f l e x 针对r i a 的特点提出来卓越的解决方案【3 1 。采用f l e x 与j 2 e e 等企业级服务应用整合 开发的r i a 将会比传统的w e b 应用程序展现出更大优势。但是f l e x 开发也存在着一 般w e b 开发过程所具有的效率低、系统庞大繁杂和可维护性差等问题。 为了解决f l e x 开发所遇到的问题,出现了很多提高f l e x 开发效率的框架,如 p u r e m v c 、a r p 、c a i m g o r m 等,其q b c a i m g o r m 作为a d o b e 公司承认的官方框架使 用最为广泛【4 匍。该框架遵循m v c 设计思想,将f l e x 应用程序分为视图层、控制层 和模型层。其中,视图层负责展现用户界面;模型层关注业务逻辑和数据一致性; 控制层根据不同应用将模型层业务逻辑与视图层映射,监听事件机制等。c a i m g o r m 框架特别提供给了三个组件类以方便程序员的开发与使用,它们分别是模型定位 器( m o d e ll o c a t o r ) 、服务定位器( s e r v i c el o c a t o r ) 与前台控制器。模型定位器承 载组件之间的数据传递,通过这个定位器程序员可以方便的绑定数据对象来供视 图层实时显示;服务定位器提供多种前后台交互的服务,如h t t p s e r v i c e 、w e b s e r v i c e 等;前台控制器建立前台传递的事件流到命令类的映射。因此相比于其它的f l e x 开发框架,c a i m g o r m 提供了强大简洁的组件以保证在程序开发过程中效率上获得 一定的提高,所以受到广大的f l e x 开发人员的欢迎。 但c a i m g o r m 框架并非完美,该框架使用上比较繁琐,维护的类相对较多;控 制层域仅限于前台,功能较弱;模型层对业务逻辑具有侵入性,不符合轻量级框 架的理念等问题。因此本文针对c a i m g o r m 框架的不足,提出了结合x m l 解析方法 和反射机制上来加强控制器与命令类的功能以及为数值对象加入切面类型检查能 c a i r n g o r m 框架在f l e x 开发中的应用研究 力的改进方案,从而将c a i m g o r m 框架改进为具有低侵入、低耦合、轻量级且易于 程序员使用的开发框架。 1 3 论文的研究内容和组织结构 1 3 1 论文的研究内容 本文分析了当前w e b 开发领域中f l e x 技术的优势及特点,并对使用c a i r n g o r m 框架辅助f l e x 程序开发所需要的技术背景进行了研究。在对现有的c a i m g o r m 框架 优缺点进行深入分析的基础上,结合观察者设计模式、x m l 解析技术和事件流响 应原理,为c a i m g o r m 框架提供改进的解析控制功能,增加多动作处理方式与反射 机制,并为模型层中的值对象增加数据验证功能,从而使框架满足轻量级、低侵 入和易于使用的要求。 本文将改进后的框架应用于f s t o p 开源项目中,通过对该项目的重构、测试和 对比分析,证明改进后的框架在功能、设计模式、程序可移植性等方面具有了一 定的改善和提高。 1 3 2 论文的组织结构 第1 章介绍了论文课题的研究背景,研究现状,研究内容及组织结构; 第2 章简要介绍了本文所要用到的技术及关键概念,首先对f l e x 的事件机制进行 了介绍,随后介绍了数据绑定等特性,最后通过实例对f l e x 开发过程中表 现出的紧耦合问题进行了阐述。 第3 章对c a i m g o r m 框架组成部分、分层解耦开发模式等做了具体介绍,分析了该 框架下主要功能类的作用。最后总结出c a i r n g o r m 框架在开发过程中体现 出的优势和不足,在此基础上做出了改进。 第4 章介绍了改进所使用的技术及策略模式。在c a i r n g o r m 框架基础上,分别对 进控制层、模型层中的命令类和数据对象进行改进,使得改进后框架满足 轻量级、低侵入的要求。 第5 章提出了如何将c a i m g o r m 框架的开发项目迁移到改进后的开发项目中,并对 改进框架在实际的项目中做出程序可移植性和代码量的测试。 第1 章绪论 第6 章总结与展望。对本文所研究的内容进行了总结,并对进一步需要研究的内 容作了展望。 一4 一 c a i r n g o r m 框架在f l e x 开发中的应用研究 第2 章f l e x 的技术背景 f l e x 使用了一套产生、广播、处理事件的机制。在f l e x 开领域中所使用的 m v c 模式的开发框架就是基于这个机制来设计的,即被传递的信息都是以事件流 的方式处理。因此,f l e x 开发与传统w e b 开发的重要区别之一就是f l e x 所使用的 开发框架属于事件驱动而非数据驱动。本章在进一步探讨c a i m g o r m 框架前,先研 究f l e x 开发所需要的相关技术背景。 2 1f i e x 开发涉及的技术背景 2 1 1f ie x 简介 a d o b ef l e x 是专注于r i a 开发和部署一系列技术和产品的解决方案,包括t h e f l e xf r a m e w o r k ,f l e xb u i l d e r , f l e xe n t e r p r i s es e r v i c e s 等。f l e x 技术是表现层解决方 案,像所有其它类似技术一样,表现层技术要解决三个基本问题:表现层界面展 示和人机交互、客户端数据操作、客户端同服务器端数据交互和整合。f l e x 针对 这三个根本问题提供了卓越的解决方案。 f l e x 开发环境基于e c l i p s e 的f l e xb u i l d e r 集成开发环境,这使得使用e c l i p s e 的传统w e b 开发者很快的熟悉开发环境,学习速度更快。f l e x 将基于标准的语言 和各种可扩展用户界面及数据访问组件结合起来,使开发人员能够快速构建具有 丰富数据演示、强大客户端逻辑和集成多媒体功能的应用程序。使用f l e x 构建的 应用程序能够在桌面平台上运行,支持对应用程序外观进行完全自定义,并支持 各种连接到后端数据和服务的方法。在服务器支持方面f l e x 整合了l i v e c y c l ed a t a s e r v i c e s ,c o l d f u s i o n 等功能强大的服务器产品。 f l e x 应用开发程序最终会被编译成s w f 类型的f l a s h 文件格式,该程序既可以 被嵌入在h t m l 网页中呈现也可以在桌面中独立显示。类似于j a v a 的虚拟机环境, f l e x 程序的客户端也需要f l a s h p l a y e r 容器来运行s w f 执行文件。因为f l a s h p l a y e r 容器在个人电脑领域的大量普及,使得f l e xr i a 拥有了与j a v a 应用程序同样的多 平台运行能力。开发者可以使用m x m l 页面或a c i t o n s c r i p t 3 脚本语言来编写f l e x 页面及逻辑。m x m l 页面在代码风格上与x m l 文件相一致,但是m x m l 最终会 第2 章f l e x 的技术背景 被转换为a c t i o n s c i r p t 3 脚本代码,这就像之前的j s p 脚本最终会转换为j a v a s e r v l e t 代码一样。凭借着灵活、强大的开发方式,个性丰富的多媒体应用程序,极强的 用户的体验,f l e x 彻底革新之前w e b 应用的客户与服务器的交互模式,被越来越 广泛的应用于企业级开发领域中【7 1 4 1 。 2 1 2 观察者模式 观察者模式定义了对象与对象之间的一对多的依赖关系,当模式中的一个对 像改变状态时,它的所有依赖者都会收到通知并自动更新。 观察者模式在生活中的具体事例表现为书报的发布订阅行为模式:读者在邮 局注册预定的书报和地址,当邮局有符合用户要求的刊物到达,就会及时发送给 读者。邮局在此相当于一个观察者,其作用是监听用户关注的书报,当书报抵达 后观察者将其发送到读者。读者不必亲自监听书报是否到达,这无疑减轻了读者 订阅方面的业务负担,如图2 1 所示。 p u b l i s h e r sm a i ls e r v e rs u b s c r i b e i s 图2 1 观察者模式 f i g 2 1o b s e r v e rp a t t e r n 在应用程序开发过程中,要求用户界面和业务逻辑分离,划定清晰的界限。 应用程序要求能快速的更改用户界面并且不能对应用程序其他部分产生连带影响, 而且业务逻辑也会发生变化并要求这一切变化与用户界面无关。观察者( o b s e r v e r ) 就是解决此问题最常用的设计模式,它非常有助于在系统中各个对象之间划分清晰 的界限。因此观察者模式在界面程序设计中应用广泛。 在f l e x 中的事件触发机制就是基于观察者模式来实现的。比如b u t t o n 中的c l i c k 一6 一 c a i m g o r m 框架在f l e x 开发中的应用研究 事件,注册监听器代码如下: b t n _ l o g i n a d d e v e n t l i s t e n e r ( ”l o g i n e v e n t ”,l o g i n v a l i d a t e ) ; 此监听器相当于一个观察者。这罩在观察者中注册了l o g i n e v e n t 事件,当此事 件产生时,将事件交由回调函数l o g i n v a l i d a t e 来处理。 2 1 3f i e x 的事件流机制 在f l e x 3 中e v e n t d i s p a t c h e r 类直接继承自o b j e c t 顶层类,d i s p l a y o b j e c t 表示 所有可显示的基类,它类继承自e v e n t d i s p a t c h e r 。在d i s p l a y o b j e c t 的众多子类中, 开发使用最多的是i n t e r a c t i v e o b j e c t 类。如图2 2 所示。 图2 2 事件机制继承类 f i g 2 2e v e n tm e c h a n i s mi n h e r e n tc l a s s e s 从图2 2 可见,随着不断的继承,界面控件最终都会含有继承自e v e n t d i s p a t c h e r 的d i s p a t c h e v e n t 这个方法。该方法有一个参数,即事件对象d i s p a t c h e v e n t ,这个 参数的作用是分发一个事件对象,分发是没有目的的,属于广播形式。f l e x 的事 第2 章f l e x 的技术背景 件监听线程会捕获到各种各样的事件,捕获事件是从根节点到子节点,检测对象 是否注册了监听器,是则调用监听函数。不同的事件可以通过标识来区分。 在发布阶段事件对象会被分发和捕获,事件流向分为目标阶段和冒泡阶段。 在目标阶段,调用目标对象本身注册的监听程序。在冒泡阶段事件从目标节点流 到根节点,并检测对象是否注册了监听器,是则调用监听函数。 所有的事件类都是继承自f l a s h e v e n t s e v e n t 类的,他包含一些比较重要的属 性:n a m e 和b u b b l e s 。n a m e 是这个对象在被捕捉到时的标识。b u b b l e s 是个布尔 值,决定了该对象是在目标阶段或是冒泡阶段被捕获。 2 1 4f i e x 中的数据绑定 数据绑定技术是当数据源对象的数据发生变化时,目标对象的数据会自动更 新,而不需要再编写代码去强制更新。数据绑定可分为界面显示绑定和后台数据 库绑定。数据绑定技术在传统开发领域大多是后台的数据持久技术,如j a v a 环境 的h i b e r n a t i o n 框架、n e t 中的a d o 控件等数据库持久化技术;目前最新流行的 w e b 2 0 技术可认为是客户端界面数据绑定,代表如a j a xr i a 技术,a j a x 的突出优 点之一就是实现h t m l 页面的无刷新动态切换,这不仅减轻了服务器的负担加快 了数据传输效率,而且给用户带来了更好的使用体验。r i a 技术的出现使得w e b 开发正走上既有b s 架构的可维护性和客户端无关性,又能达到c s 架构所能达 到的本地化界面的交互性的道路【1 5 捌】。 f l e x 技术在实现数据绑定上相比a j a x 具备更大的优点。首先f l e x 开发具有开 源独立的开发和运行环境,这使得f l e x 程序不存在兼容性问题,且易于调试和维 护。其次f l e x 已实现数据绑定的代码封装到位,对比a j a x 要编写的j a v a s c r i p t 代 码量大且a j a x 框架极多等不足,使用f l e x 的数据绑定会减轻开发者的负担。 f l e x 的数据绑定实际也是借助事件机制来完成的,当目标使用了数据绑定的时 候,目标对象就会监听数据源对象的某一固定事件。当数据源发生变化时,数据 源会派发改变事件( c h a n g e e v e n t ) ,通知目标对象更新数据。这个过程由f l e x 完 成,不用程序员手动干预。数据绑定的前提条件:源对象的数据和目标对象的数 据格式相同。实现数据绑定的方法: c a i m g o r m 框架在f l e x 开发中的应用研究 1 在对象的属性标签中,使用“ ) 把数据源直接绑定到对象的某个属性上。 2 在对象的属性标签中,使用“ ) 把某个函数的返回值作为数据源绑定到对 象属性。 函数的参数要使用 b i n d a b l e 绑定符号 3 b i n d a b l e ( e v e n t = “e v e n t n a m e ) 】。e v e n t 表示当数据源发生变化时,数据源 所在对象派发的事件类型,它是可选项,默认的事件名是 p r o p e r t y c h a n g e ”,一般 情况下只需要使用 b i n d a b l e 标签 2 2 事件流机制应用实例 基于f l e x 事件流机制的应用程序是由用户动作在界面层组件作产生事件并被 监听器所捕获,该事件监听器需要开发者写入代码并映射好相应的回调函数。之 后程序流程会进入自定义响应事件,再广播该事件。这个事件同样会被监听器所 接收并调用相应的回调函数去处理。 为了说明f l e x 的事件驱动编程模式,下边用事件流机处理制来演示一个用户 登录框验证实例,程序的事件流程结构设计如图2 3 所示。 图2 3 事件流图 f i g 2 3e v e n t sf l e w 从图2 3 的事件流可以看出f l e x 内部组件不是以b s 架构程序那样基于h t t p 协议发出请求,e hj 艮务器端通过一个标准接口读出参数并处理并做出响应。而是 一9 一 第2 章f l e x 帕技术骨景 将所有的用户交互请求以事件的方式发布,程序员需要在程序中使用事件监听器 监听这些事件因此这就需要f i t = 程序开发者关注可能产生的用户界面交互事件 类型、设置监听墨及自定义事件类所以,只瓤开发是基于事件驱动模垂稿程筷 式的,这种模式在开发中具有麓统一处理f l e x 客户端程序中备个组件闻有效传递 的参投、协调组件l 矗l 的行为等好处以用户登录验证的例子来说在界面点击登 录按钮后- 台产生对应的登录事件对象,泼事件对象会被f i “的摹件监听器接收 并处理登录验证程初始序界面知匿2 4 所示。 丑录表中 用户名 害b : 重置 i th 幽暑4 疆序舁叠 f 畦2 h * 缸 谖程序的执行流程是首先在m x m l 页面中执行初始佬函敷i a 认p p 0 ,该蕾数中 注册了监听函数b 打u o g _ m 酣d b v 鼬础s 把n 靠( ) 并监听b h l j o g i n 组件发出的事件 点击登最后会艘发b m _ l o g i n 的d i c k 事件,调用o n c l l c ti o g i n 两数此函数中 会初始化自定义事件i o g i n e v m t ,之后调用组件的d i s p a 心e v e n t 0 7 y 法将自定义事 件广播,可以发现f k x r l a 程序传输的都是事件对象。即以事件为驱动。逸是f i 强 和| ;置传输数据对象为驱动的传统w e b 程序的区别之一。这里界面控件b 恤i o s i n 阃 接继承戡蜘m 姊- 曲甘爨,所l ;i 它具备事件捕获、注珊及广播能力该页面的代 丹如下# q “: 刚谢c 删e f f i i n i a p p 0 刮 c d a t a c a i m g o r m 框架在f l e x 开发中的应用研究 i m p o r tn i x c o n t r o l s a l e r t ; i m p o r te d u d m u * ; i n t e r n a lf u n c t i o ni n i a p p o :v o i d b t n _ l o g i n a d d e v e n t l i s t e n e r ( ”l o g i n e v e n t , n e wl o a d x m l ( ”e d u d m u u s e r s x m l ”) l o g i n v a l i d a t e ) ; ) i n t e r n a lf u n c t i o no n c l i c k _ l o g i n ( e v t :m o u s e e v e n t ) :v o i d v a te :l o g i n e v e n t - = n e wl o g i n e v e n t ( ”l o g i n e v e n t ”) ; e n a m e = t x t _ n t i m e t e x t ; e p a s s w o r d = t x t _ p w d t e x t ; b t n _ l o g i n d i s p a t c h e v e n t ( e ) ; ) 自定义事件必须继承e v e n t 事件,并且在构造函数中设置该事件对象被捕获的 阶段一目标或者冒泡阶段。另外对于开发者需要传递的数据以成员变量的形式定 义。示例的自定义事件的代码如下: p u b l i cc l a s sl o g i n e v e n te x t e n d se v e n t p u b l i c v a rn a m e :s t r i n g = ”; p u b l i cv a tp a s s w o r d :s t r i n g = ”; p u b l i cf u n c t i o nl o g i n e v e n t ( t y p e :s t r i n g ) :v o i d s u p e r ( t y p e ,f a l s e ,f a l s e ) ; ) ) 其中n 锄e 和p a s s w o r d 是自定义事件所携带的验证信息,构造函数l o 百n e v e n t 中 设置了捕获阶段的b u b b l e 为f a l s e 。 登录程序中注册监听器时,设置了事件捕获后的响应处理函数l o g i n v a l i d a t e , 第2 章f l e x 的技术背景 该函数是实际执行验证用户身份逻辑的代码,具体代码如下; p u b l i c f t w l 嘶o n l o g i n v a l i d a t e ( e v t :l o g i n e v c n t ) :v o i d f 嘶& 洲a i m = e v t a l a m e ; i h b 枷柏鲫州= e v t 蕾舳翱咖咄 i 坷) v a l i d a t e p a s s e d a p p l i c a t i o n a p p l i c a t i o n a m n 啊0 0 s ”: e l s e ”蜘s 一 ) 验证结束后程序需要将结果返回到客户端页面中,更新客户端状态同时也给出 显示信息。在这个示侧中,当l o 画n m a 把函数作为回调函数被调用后,所捕获的 事件也一并作为参数被传递,这晕传递的参数眦n 嚼吨w i 哇就是之前自定义的事 件对象。如果验证成功,设置印曲c 越j 的锄m 蝴s t 破e 属性设置为辄c 。e 站。这里的 s t a t e 属性是f l e x 界面特有的技术,它可以使得界面无刷新快速切换,使w 曲应用程 序界面达到桌面级界面显示效果。下图是当验证错误时返回的失败界面,如图2 5 所示。 最录表单 川户g 嘁言日培误 川j 】: s 5 $ h : 可吐谈 幽25 返同无刷新显示效果 f i g2 5 n o n - r 曲 e s h l _ e s u l t 通过以上的程序的开发过程演示,本文探讨了如何用事件流驱动模式来丌发 c a i m g o r m 框架在f l e x 开发中的应用研究 f l e x 应用程序。相比于传统的j a v a 或n e t 中的h t m l 和j a v a s c r i p t 组合模式的数据驱动 编程,事件驱动编程的好处是使得程序以事件流的顺序去执行,这样对于程序员 来说能够简化r i a 大量组件间的参数传递、开发符合面向对象思想、开发逻辑清晰 并且通过事件来传递数据到后台脚本的处理函数使得界面逻辑与模型逻辑做了一 定的解耦。 尽管遵从事件流开发满足了一定程度的解耦,但是它的代码仍然属于混乱级开 发流程。首先m x m l 页面代码中既包含组件代码也包含大量脚本代码,代码形式不 统一。其次在界面代码中暴露了大量后台脚本的类及方法,如在注册时间函数中 设置回调函数时引入了l o a d x m l 类及初始化参数”e a u d m u u s e r s x m l ”,这使得程序 块内聚性低侵入性强,不符合轻量级设计原则,同时也降低安全性。 由于上述问题的存在,f l e x 程序的开发过程不可避免需要借助m v c 分层设计 模式,以使程序在设计开发上进一步解耦。在众多的基于m v c 模式的开发框架中, 官方的c a i m g o r m 框架最具代表性。c a i m g o r m 同样是以事件流驱动为基础,但是同 时又增加了大量的辅助类和组件。由于c a i m g o r m 框架具备诸多优点和普遍使用,“ 下文将会详细分析研究c a i m g o r m 框架。 第3 章c a i m g o r m 框架的研究 第3 章c a ir n g o r m 框架的研究 c a i r n g o r m 开发框架得到了a d o b e 开发团队的支持。在f l e x 开发领域,被广 泛应用于企业级的软件开发,可结合j 2 e e 或n e t 等开发技术。c a i r n g o r m 框架不 但能够提高开发效率,也利于团队合作。本章将深入研究c a i r n g o r m 框架的组成部 分和开发模式。 3 1 对c a i m g o r m 框架分析 3 1 1m v c 开发模式简介 在第二章的开发示例中并未使用任何设计开发模式,a c t i o n s c r i p t 代码散布在 m x m l 页面的各个地方,这使得系统的显示层与逻辑层混杂在一起,对于小型项 目可能不会出现问题,但随着应用的扩展就会出现越来越多的问题。 为了解决代码混乱、不易维护等问题,要在程序设计开发过程中使用m v c 模 式。m v c 模式中用不同的组件分别处理业务逻辑和现实逻辑。这些m v c 组件可 分成三类:模型( m o d e l ) 、视图( v i e w ) 和控制( c o n t r 0 1 ) 2 2 - 2 5 】。 模型:模型层主要负责所有的业务逻辑操作和业务数据的数据库存储。同 一个模型可以被多个视图重用。 视图:视图层也叫表现层,主要以模版文件表示,主要负责把模型数据填 充到h t m l 标记中。视图向用户显示相关的数据,并能接收用户的输入数 据,但不能进行任何实际的业务处理。 控制:控制层主要负责w e b 请求处理,通过操作模型和传递数据到视图层 来实现w e b 请求。 一个通用的m v c 模式的w e b 应用框架如图3 1 所示。 c a i m g o r m 框架在f l e x 开发中的应用研究 甸司 一 图3 1m v c 逻辑关系 f i g 3 1l o g i c a l i e l a t i o no fm v c c a i m g o r m 框架从根本上来说也是将程序代码按照逻辑功能( 数据、用户视图、 以及起控制作用的代码) 分层,即m v c 分层模式下的m o d e l ( 模型) ,v i e w ( 视图) ,和 c o n t r o l ( 控制) 。在此基础上,c a i m g o r m 框架特别提供给了三个组件方便程序员开 发使用,它们分别是模型定位器( m o d e ll o c a t o r ) 、服务定位器( s e r v i c el o c a t o r ) 与前台控制器。模型定位器承载组件之间的数据传递,通过这个定位器程序员可 以方便的绑定数据对象来供视图层实时显示:服务定位器提供多种前后台交互的 服务,如h t t p s e r v i c e 、w e b s e r v i c e 等;前台控制器建立前台传递的事件流到动作层 命令的映射。因此相比于其他的f l e x 开发框架,c a i m g o r m 提供了强大简洁的组件 保证程序开发过程在效率上获得一定的提高,所以受到广大的f l e x 开发人员的欢迎 【2 2 1 。c a i m g o r m 框架的m v c 运行模式如图3 2 所示。 第3 章c a i r n g o r m 框架的研究 l et y p e s c a i m g o r mm v cl a y e r s i l l s l n ; 斗d a m l p 晒j e i d a t a 獬j 。曝嘞黔”f :嘞j :。如域翰 :“4j | i 口觋i 。i 。i 髫j 咎z 瓢: 吖l ,j 矗 r ei 纂g o t v i e w l 麓 貔施# 玩 鬣渤;自弛。;磊;。:勉州女# 磊锄# 勿蕊细密玩缀趣稚;勰施g 女缀。赫。毙施旃出迄霪 _ p r o s i n e s s & d a t aa c c e s s c o n t r o l l e r u s 拥 e v e i 图3 2c a i r n g o r mm v c 模式 f i g 3 2c a i m g o r mm v cp a t t e r n 3 1 2c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年富裕县12345综合指挥中心招聘公益性岗位人员(1人)模拟试卷及参考答案详解1套
- 网络改变世界课件
- 期货从业资格之期货投资分析考试历年机考真题集及答案详解(典优)
- 2023年度燃气职业技能鉴定题库检测试题打印及参考答案详解(精练)
- 火电电力职业鉴定模拟试题附参考答案详解【巩固】
- 2025山东商务职业学院招聘21人模拟试卷附答案详解(b卷)
- 2024-2025学年度新疆能源职业技术学院妇产护理期末自我提分评估附答案详解【轻巧夺冠】
- 2023年度安全监察人员考试历年机考真题集及参考答案详解(精练)
- 辅警招聘考试题库检测试题打印及参考答案详解(典型题)
- 2024自考专业(工商企业管理)模拟试题附完整答案详解【夺冠】
- 大宗商品贸易管理制度
- 《应用语文(第三版)》课件 第三单元 特殊情境口语交际
- 帮人贷款协议书范本
- 果农电商合同协议
- 武汉网约车从业资格证考试题库及答案
- DB1411T 65-2024 旱垣地高粱田间测产操作规程
- 数码印花操作培训课件
- GB/T 44808.2-2024人类工效学无障碍设计第2部分:考虑颜色视觉随年龄变化的颜色组合方法
- 七年级上册人教版历史知识点总结
- GB/T 30137-2024电能质量电压暂升、电压暂降与短时中断
- 《外购仔猪的管理》课件
评论
0/150
提交评论