什么是Cairngorm
Cairngorm微架构是一个轻量级的RIA开发框架。
Cairngorm主要就是对开发Flex应用程序应用了一系列的设计模式,从而使开发出来Flex程序可扩展性,可维护性都大大提高。其工作流程很清晰:
1.Front Controller Listens for User Gestures
前端的控件监听用户的行为。注意它只是监听,并不会做任何反应。
2.Commands Do All the Work
控件监听以后调用Commands来做相应的事情,Command做了所有工作。
3.Delegate Server-Side Business Logic to Business Delegates
把服务器端的业务逻辑委托到 Bussiness Delegates中。因为很多时候command需要获得服务器端数据,所以这样一来它可以直接调用Bussiness Delegates而不用关注如何连接数据的细节,实现了信息隐藏。
4.Business Delegate Finds Services with the Service Locator
Command调用Business Delegate 后,Business Delegate 通过Service Locator来找到相应的RPC services,然后执行实现从服务器端取数据。
5.Transfer Data as Value Objects
把传输过来的数据存储为Value Objects。这点大家应该都很熟悉,比如想要查询一个公告,就必定创建一个公告类,来存储每一个公告的标题等信息。
6.Store State in the Model Locator and Let Model Notify View
在Model Locator 保存状态并且能使Model检测到View的变化。这样一来用户操作就能直接影响Model,比如添加物品到购物车,Model中的购物商品就会自动增加。
在Cairngorm基础上开发RIA, 将会在大大提高开发和维护的效率。.
Cairngorm本身并不是一个完整的企业应用, 它只是提供了一个开发的骨架, Adobe称之为体系.在这个体系中包括以下几个部分:
1. Business(业务逻辑部分)
2. Command(命令部分)
3. Control(控制部分)
4. Model(数据模型)
5. View(界面视图)
6. VO(ValueObject)
Cairngorm框架最新版本是2.1,是面向Flex 2.0的,如果你用的事Flex 1.5那么你应该使用Cairngorm 1.5。你可以到这个网站下载到框架源码、例子贺文档http://www.cairngormdocs.org/
在这里我们将对Cairngorm框架中的各个部分进行一个简单的介绍。
先来看一下Control部分
Control中有3个基类:CairngormEvent, CairngormEventDispatcher和FrontController
CairngormEvent继承与flash.event.Event, 他包含一个data成员,用来传递参数数据之用。
CairngormEventDispatcher
是一个单例类(singleton),用来广播用户发起的动作类事件 (CairngormEvent),主要的调用方法是
CairngormEventDispatcher.getInstance().dispatchEvent().
FrontControllers
可以说是控制中心。在这里你要做的工作是将事件(CairngormEvent)和命令(Command)之间的映射关系注册在它的成员中(
该成员类型是Dictionary),通过下面的类似方法进行注册。
addCommand(OrderRequestEvent.EVENT_GETUSERORDERREQUESTS,
GetUserOrderRequests);
如此一来,凡是CairgormEventDispatcher广播出来的事件都会在这里进行查找,找到某个event对应的command,然后会执行command的execute()方法。
FrontController必须要在你的系统中实例化,具体的实例化方法如下:
<mx:Application xmlns:control="com.domain.project.control.LoginController" ... >
<control:LoginController />
</mx:Application>
我们再来看Command部分
在
Command中定义了ICommand接口,在2.0中叫Command,其实没有区别,只不过是名字上的修改更能体现接口的意思罢了。在
ICommand接口中定义了一个唯一需要实现的方法execute(),这其实就是典型的命令模式,我们要做的就是实现此接口,并不需要关心命令模式的
具体实现方式。
Model部分
在Model中定义了接口ModelLocator,我们只需要实现该接口,并把所有需要办绑定的数据放在这里就可以了。一般我们都采用单例模式
(Singleton)来实现,而且根据项目模块进行分类,而不是一股脑儿的把所有数据都扔到这里了事。可以说ModelLocator是系统的数据中
心。
Business部分
在Business中定义了接口IServiceLocator,另外的Responder已经在2.1中被mx.rpc.IResponder代替了。
我们需要将所有的RPC服务登记在该接口中,采用mxml的形式来单例实现IServiceLocator,如下面的例子所示:
<cairngorm:ServiceLocator xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:cairngorm="com.adobe.cairngorm.business.*">
<mx:HTTPService url="broker/heartbeat.action"
result="event.token.resultHandler( event )"
fault="event.token.faultHandler( event )"
showBusyCursor="false"
useProxy="false"
resultFormat="e4x"/>
<!-- Remote Object -->
<mx:RemoteObject destination="OrderManagementService"
showBusyCursor="true" result="event.token.resultHandler( event );"
fault="event.token.faultHandler( event );">
</mx:RemoteObject>
</cairngorm:ServiceLocator>
并且需要在系统中实例化一个ServiceLocator,如下面所示写在Application中:
<business:Services />
使用方法:
在某个Delegate中通过下面的方式得到该service的实例,之后就可以进行函数调用了:
this.service = ServiceLocator.getInstance().getRemoteObject( "orderManagement" );
View 部分
再来看看View中都有什么。View中有ViewHelper和ViewLocator。
ViewLocator是一个单例类,用于统一管理和获取ViewHelper。类似于ServiceLocator,和FrontController,在这里可以注册多个ViewHelper,并通过关键字直接找到需要的ViewHelper实例。
ViewHelper是具体用来操作某个视图的类,它是通过其成员变量view来引用到具体的视图,当它被实例化的时候就会在ViewLocator中注册一个ViewHelper
如:
<viewhelper:ListViewHelper />
将实例化一个ViewHelper,并在ViewLocator中注册一个名为listViewHelper的ViewHelper实例,通过该id可以得到其实例的引用,如:
var listViewHelper:ViewHelper = (ViewHelper )ViewLocator.getInstance().getViewHelper("listViewHelper")
VO 部分
最后提一下vo,其实IValueObject和ValueObject没有任何实际作用,唯一的就是提高vo类的可读性,表示该类是一个ValueObject,可能是为将来设计用的。我们不需要实现任何接口函数。
相关推荐
weblogic启动异常故障处理(boot认证失败)
root 用户生成的文件属主为 root,WebLogic进程将无权读取,直接导致认证失败。· ⚠️ 密码必须完全一致:第3步 AdminAccount 命令中设置的密码,与第5步所有 boot.properties 文件中 password= 字段的值,必须保证完全一致。如果您的域下配置了受管服务器实例(如 ms_server1、ms_server2 等),必须逐一更新各实例下的免密启动文件,确保实例重启时密码与AdminServer保持一致,否则实例启动会因认证失败而报错。此步骤至关重要,必须执行。
Latex使用手册
latex的基本使用
飞牛NAS一键部署小雅Emby全家桶:解锁海量影音资源与智能刮削
本文详细介绍了如何在飞牛NAS上通过Docker一键部署小雅Emby全家桶,完美解决传统WebDAV挂载无法刮削元数据的问题。该方案整合了小雅Alist海量影音资源与Emby媒体服务器,通过预下载超百GB元数据包,自动实现海报、简介等信息的完美匹配,打造出精美的个人影音库。部署过程需准备阿里云盘令牌与充足存储空间,并详解了从环境配置、镜像拉取到最终验证的完整步骤及优化技巧。
LaTeX教程(一)——LaTeX介绍以及导言详解
LaTeX导言介绍
LAN8720芯片硬件设计避坑指南:从晶振选择到PHY地址配置的5个关键细节
本文深入解析LAN8720以太网PHY芯片硬件设计的五个关键细节,涵盖晶振模式选择、PHY地址配置、复位电路设计、电源滤波与接口布线。重点阐述了REF_CLK Out与REF_CLK In两种时钟模式的配置逻辑与应用场景,提供了避免通信失败与信号完整性问题的实战方案,是嵌入式网络硬件开发的实用避坑指南。
HTB_Bike靶机之模板注入
船到桥头自然直 文章目录信息收集模板引擎SSIT 模板注入后放答案 信息收集 日常 A 扫描,两个端口 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 48:ad:d5:b8:3a:9f:bc:be:f7:e8:20:1e:f6:bf:de:ae (RSA) | 256 b7:89:6c:0b:20:ed:49:b2:c1:86:7c:.
跟我StepByStep学FLEX教程------Cairngorm之Command部分
跟我StepByStep学FLEX教程------Cairngorm之Command部分 说明:该文系作者原创,请勿商用或者用于论文发表,转载必须经作者同意并且注明出处。 这一讲对Command部分进行详细解释,也就是command如何通过Delegate部分去做Services(Remoting,Webservices...等等)。 从上一讲中读者...
小华半导体HC32芯片开发使用说明
HC32F/L系列MCU在Keil MDK和IAR Workbench环境下通过工程样例进行软件开发。
Flex Cairngorm详解
Cairngorm是一个开源的Flex项目,为FLex提供了一个类似MVC的体系结构框架,它是Flex RIA开发的最好框架之一。使用Cairngorm框架可以大大提高开发和维护的效率。 Cairngorm说白了就是一大堆的设计模式和功能模块,它分为6部分,分别是: Business(业务逻辑部分)。Command(命令部分)。Control(控制部分)。Model(数据模型部分)。V
IQA图像质量评价 数据集介绍(LIVE、TID2013、CSIQ、LIVEC、KonIQ-10K)
LIVE、TID2013、CSIQ、LIVEC、KonIQ-10K 数据集介绍
FFmpeg 开发(01):FFmpeg 编译和集成
尽管 FFmpeg 功能强大,但是由于其采用的是带有传染性的 LGPL/GPL 开源协议,所以一些大厂基本上都是自己独立开发类似的音视频处理库,甚至在接口和组织模块上模仿 FFmpeg 。
第十一章 深入理解Cairngorm架构模式
第十一章 深入理解Cairngorm架构模式任何Flex应用资源包都是MXMl文件、ActionScript文件,基础类库swc文件以及一系列环境配置文件的混合体。如果没有框架的支持,各个模块的组织看起来总是乱糟糟的一片,尤其当你的应用规模变得原来越大的时候。如题所示,Cairngorm框架模式在一定程度上解决了这个问题。它使客户端的开发
【点云鸟瞰图BEV】点云鸟瞰图BEV原理与可视化
本节将介绍激光雷达等点云的鸟瞰图生成原理、代码及效果图。 1 BEV视图原理 点云BEV(Bird's Eye View)视图是指点云在垂直于高度方向的平面上的投影。通常,在获得bev视图前,会将空间分割成体素,利用体素对点云进行下采样,然后将每个体素作为一个点进行投影。体素是指将三维空间按照固定尺寸长方体进行划分时的长方体(Δl*Δw*Δh)。 体素投影时可以得到BEV视图的像素点坐标。每个像素点的特征取值则可以通过多种方式得到。 ...
Cairngorm入门的例子
本文来自:http://www.cnblogs.com/zhainanJohnny/archive/2010/11/28/1890356.html 上一篇介绍了一下Cairngorm的基本组成,下面我给大家展示一个简单的例子。 我们按一个完整的Cairngorm流程来介绍这个例子。这个例子很简单,一个按钮和一个标签,当按钮点下之后标签上的数字开始递增。首先,我们需要一个页面,也就...
欧蓝德V1.3.0&V2.1.0中控升级包
欧蓝德V1.3.0&V2.1.0软件升级注意事项 更新功能:此次更新加入安卓9.0支持和倒车引导线关闭选项 升级注意事项: 将U盘格式化为FAT32格式,U盘中切勿同时存储其它文件 整机升级过程全自动进行,无需操作,升级完成后,需按提示拔出U盘,整个过程预计3分钟以内。 导航USB 1接口为升级口。主机软件升级过程中,请勿断电!请勿拔出USB升级盘! 软件分16-18 MY、19MY,请对应年款、对应导航系统软件版本使用。 16-18款适用于1.3.0版本软件(支持:1.0.0、1.0.1、1.2.0、1.2.1、1.2.2) 19款适用2.
基于MATLAB的三相异步电机矢量控制变频调速系统设计与仿真 Simulink
内容概要:本文详细介绍了基于MATLAB的三相异步电机矢量控制变频调速系统的设计与仿真过程。首先,计算了三相异步电机的T型等效电路模型参数并绘制了机械特性图,以便理解电机的基本电气性能。其次,计算了转子磁链的电流模型或电压模型,并进行了仿真以验证模型的准确性。然后,设计了矢量控制变频调速控制系统的原理框图,并设定了具体的控制参数,确保系统能够高效稳定运行。最后,通过MATLAB进行了全面的仿真测试,采集了不同频率下的转速波形,并对仿真结果进行了详细的分析,指出了系统可能存在的问题及其改进方向。适合人群:从事电机控制、自动化控制领域的工程师和技术人员,尤其是那些对MATLAB有一定了解的人群。使用场景及目标:适用于需要深入了解三相异步电机矢量控制变频调速系统的工作原理和设计方法的研究人员和工程师。目标是掌握从理论到实际应用的完整流程,提高电机控制系统的性能和可靠性。其他说明:本文不仅提供了详细的理论推导和公式计算,还附带了完整的仿真程序,便于读者动手实践和验证所学知识。
Cairngorm 3 introduction 介绍
Cairngorm 3 introduction 介绍 Posted by admin | Filed under RIA相关 原文:http://www.kenjor.com/?p=170 Cairngorm 3 lays the foundations for delivering successful Flex projects. It consists of: Cairngorm 3 为开发成功的Flex工程做了三件基础工作 1.Guidelines that describ
Mali_OpenGL_ES_Emulator-v3.0.1.g72cc2-Windows-64bit.zip
模拟器喵″
Cairngorm开发流程
Cairngorm是轻量级的MVC框架,非常依赖于Flex的一些特性,所以总体来说是比较容易理解的,但是上手确不是那么简单。Cairngorm的MVC划分的很清楚,甚至可以说是过于苛刻。整个框架没有对View,Model和Controller进行关联,而是对Event和Command的映射。使用Cairngorm开发一个应用的步骤大概分为一下几步1. 定义服务Service在business文件夹
三菱PLC程序源码-FX2NPLC与安川G7变频器通讯(原创)有注释,MEMOBUS的写方式.zip
三菱PLC程序源码-FX2NPLC与安川G7变频器通讯(原创)有注释,MEMOBUS的写方式
Cairngorm 框架
Cairngorm是已知的最为古老与最好的Flex 框架。它实际上是一个微架构——它提供了一系列已经被证明可以很好的互相协作的设计模式的集合。Cairngorm采用累来自Java开发世界的笨重并且把焦点集中到了三个关键区域:处理用户行为,包装服务端交互与业务逻辑,并且管理客户端状态以及在用户界面(UI)上体现客户端状态。 在Cairngorm构建一个项目包含了拆散你的应用到若干个包中并且扩...
Cairngorm开发框架
本章简介Cairngorm是由adobe公司推出的一个轻量级的Flex RIA程序开发框架。目的是提高程序的可扩展性、可维护性,其本身并不是一个完整的企业应用,它只是提供了一个开发骨架,Adobe称之为体系。 Cairngorm主要就是对开发Flex应用程序应用了一系列的设计模式,从而使开发出来Flex程序可扩展性,可维护性都大大提高。代价就是异常繁琐的文件书写。往往为了完成一个简单的功能需要修改
Flex的Cairngorm学习总结
1.首先到官方网站浏览一下:http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm 2.最好先从cairngorm2开始,v2版本的最后版本是2.2.1,用这个版本的时候,最好通过svn把源代码抓下来,源代码其实
Cairngorm初探
Cairngorm可以在官方网站(http://opensource.adobe.com/wiki/display/cairngorm/Downloads )上下载到,其中有bin目录(包含编译好的swc文件),有doc目录(包含使用说明),当然还少不了src目录(包含所有的源码)。 打开src目录,可以看到com.adobe.cairgorm下只有几个目录,代码量并不大,其中主要分
Cairngorm 介绍
Cairngorm 框架简介Cairngorm 是一种 MVC 框架,它可以帮助开发者很好的组织代码,分层,从而使得代码更加清晰易懂,可以使设计者,UI 组件开发者,数据服务开发者并行工作,从而提高开发效率。Cairngorm 由五大组件构成,分别作为存放数据的仓库 (ModelLocator),存放服务的仓库 (ServiceLocator),处理业务逻辑的命令 (Command),自定义的用于触发命令执行的事件 (Event),用于把事件映射到命令的前端控制器 (FrontController)。它应用
采用Cairngorm的开发步骤
1、编写控制器 package com.forbeauty.store.control { import com.adobe.cairngorm.control.FrontController; /** * @version $Revision: $ */ public class ShopController extends FrontController { public function S...
Cairngorm示例:用户登录
1. Cairngorm简介 Cairngorm是一个Flex程序开发框架,基于MVC设计模式。 使用Cairngorm进行开发时我们一般涉及以下几个部件的开发: ModelLocator:定义Model。ActionScript类,一般采用singleton模式实现,必须 是Bindable的 ServiceLocator:定义与之进行通...
Flex Cairngorm框架实现介绍
本系列文档力求通过简洁的讲解和简单的例子使开发者能快速地掌握基于Cairngorm的Flex程序的设计过程,在后面的文档中后台语言将以JAVA为例,并介绍笔者在实际开发过程中应用的比较稳定的Flex+J2EE框架,希望能对想学习或应用Cairngorm的开发者提供一定的帮助。本文
220



被折叠的 条评论
为什么被折叠?



