一、Cairngorm运行机制
1.1 Cairngorm的大体工作流程
客户端界面是View组成的,View使用Flex的bingding绑定来显示ModelLocator中包含的数据。View根据诸如鼠标点击之类的用户动作产生Event。这些Event被FrontController“广播”并“监听”。FrontController会将Event映射到一个Command类。主要的业务逻辑在这个Command中处理,Command创建所需的委托Delegate,委托进行与后台交互数据以及得到数据,然后更新存储在ModelLocator中的数据。由于View是绑定到ModelLocator中的数据上的,所以View就自动更新了。
使用Cairngorm框架后,可以使基于后台调用的开发,条例清晰,增删功能简单。
1.2 一个功能涉及到的类
1.2.1自定义事件类此类
此类extends CairngormEvent;
1.2.2事件处理Command类
此类implements com.adobe.cairngorm.commands.ICommand, mx.rpc.IResponder.IResponder。
实现的接口方法:
1:execute( event:CairngormEvent ):void,当此事件被激发的时候,就执行此方法,原因下面将说明。
2:result( info:Object ):void和fault( info:Object ):void。
当使用mx.rpc.IResponder和RemotOjbect进行后台调用时,调用成功、失败的事件处理方法。
1.2.3事件监听注册Control类
此类extends FrontController,调用父类的addCommand方法,进行注册事件监听。
其父类FrontController的addCommand方法如下,commands是一个Dictionary,当注册时间监听时保存信息,通过事件名称保存处理此事件的Command类名。
当事件触发时,调出相应的Command类:var commandToInitialise : Class = getCommand( event.type );
实例化此类:var commandToExecute : ICommand = new commandToInitialise();
调用监听方法:commandToExecute.execute( event );
由于所有的Command类都实现了ICommand接口,所以都会去执行自己的execute方法。
public function addCommand( commandName : String, commandRef : Class, useWeakReference : Boolean = true ) : void { if( commands[ commandName ] != null ) throw new CairngormError( CairngormMessageCodes.COMMAND_ALREADY_REGISTERED, commandName ); commands[ commandName ] = commandRef; CairngormEventDispatcher.getInstance().addEventListener( commandName, executeCommand, false, 0, useWeakReference ); }
1.2.4数据存储类Model
此类implements IModelLocator,并且使用“单一模式”防止数据二义性。
1.2.4后台调用RemoteObject服务
需要使用Cairngorm提供的ServiceLocator,建立一个mxm文件基于ServiceLocator。在里面写RemoteObject服务;
1.2.5后台调用代理 GeneralServices
首先通过ServiceLocator得到注册好的RemoteObject:this.service = ServiceLocator.getInstance().getRemoteObject("remoteObject名称");
然后开始写调用的方法,用AsyncToken进行调用后的监听,通过addResponder方法指定处理类。
var call:AsyncToken = service.Logon(user.userName, user.password);
call.addResponder(处理结果类);
处理结构的类,必须implements mx.rpc.IResponder.IResponder接口,实现result和fault方法,一般为Command类。
1.3 一个功能的工作流程
①首先将“事件监听注册Control类”和“后台调用RemoteObject服务”,通过mxm标签形式初始化。
②用户通过界面交互,出发一个事件(按钮事件等),在此事件处理中new出对应的功能事件,然后调用dispatch方法。
③犹豫已经功过FrontController类的addCommand方法注册了事件监听,所以当事件发生时,会马上执行对应的Command类中的execute方法;
④在Command的execute方法中new出对应后台代理类,并调用对应功能方法;
⑤当后台结果返回时,根据成功失败,调用result 或 fault方法;
⑥得到的数据后,更新相应的modul 上的数据,界面上显示的数据级联更新。
相关推荐
Cairngorm例子Cairngorm例子Cairngorm例子Cairngorm例子
什么是Cairngorm,内部MVC结构,Cairngorm的各个部分
flex框架之Cairngorm框架,一个用Cairngorm与后台通信实例
flex框架之Cairngorm框架,包括Cairngorm框架
Cairngorm is the lightweight micro-architecture for Rich Internet Applications built in Flex or AIR. A collaboration of recognized design patterns, Cairngorm exemplifies and encourages best-practices ...
Cairngorm框架配置是flex的前端一个框架
cairngorm.swc供需要的朋友急用
Flex框架Cairngorm经典案例源码 完全掌握Cairngorm
cairngorm框架是flex界的mvc框架,传统的flex开发方法开发的代码难以维护。 这个是cairngorm的中文版入门讲解
一个 Flex+J2EE实例(cairngorm+blazeDS+hibernate+spring) 本实例为一个 flex 与 java通信项目。前端采用cairngorm框架,后台 采用hibernate+spring 每个部署 步骤,附详细 图文解释。旨在 采用 一种快速开发 ...
Cairngorm本身並不是一個完整的企業應用,它只提供一個開發的體系,讓開發者遵循這個體系開發出一個結構清暫,解耦良好的程序代碼從而提高程序的維護和擴展。 Cairngorm這個體系包括以下六個部分: Business(业务...
Flex流行MVC框架之Cairngorm
cairngorm与lcds结合应用的最小工程包,适合研究cairngorm 与lcds的用户
Flex开发框架cairngorm入门实例教程,有需要的人可以看一下
felx cairngorm实例 直接导入即可运行 简单易懂 载网上找了好久就这个我能运行起来 因为不需要做任何的修改
这个是帮BRT公司做的一个抽奖效果,里面有效果文件和源文件。用cairngorm架构做。只算是一个小例子。
Cairngorm 源码 Cairngorm 源码 Cairngorm 源码
前台FLex工程(单独工程Cairngorm)使用Cairngorm框架与后台java工程(FLexToJava)进行数据交互。功能点: ①flex提交表单保存到数据库; ②flex向后台请求,后台返回List集合,flex将集合填充到combox 附带:...
Cairngorm框架是优秀的框架,按照博士、硕士论文中说的主要在Cairngorm的event和command,每个事件都的编写一个对应的event和command,过于麻烦,造成代码量过多。我的解决办法: 1、用一个通用event代替所有。 2、...