`
阅读更多
什么是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,可能是为将来设计用的。我们不需要实现任何接口函数。
分享到:
评论

相关推荐

    Cairngorm开发文档中文版

    Cairngorm是一种轻量级的ActionScript框架,主要用于构建Flex和Adobe AIR应用程序。这个框架是基于模型-视图-控制器(MVC)设计模式,旨在提高应用的可维护性和可扩展性。Cairngorm由Adobe开源社区推出,旨在为开发...

    Cairngorm例子

    Cairngorm是一个轻量级的MVC(Model-View-Controller)框架,主要用于构建Adobe Flex和ActionScript 3.0应用程序。这个框架是开源的,由Adobe社区维护,旨在帮助开发者实现更有序、可扩展和可维护的代码结构。 在...

    Flex框架Cairngorm经典案例源码

    Cairngorm是Flex社区中流行的一种轻量级MVC(Model-View-Controller)框架,它提供了一种结构化的方法来组织和管理Flex项目的代码,从而提高开发效率和代码可维护性。 Cairngorm框架的核心组件包括: 1. **模型...

    cairngorm + lcds最小包.rar

    《cairngorm与LCDs结合应用:最小工程解析》 在Adobe Flex开发领域,cairngorm和LiveCycle Data Services (LCDS)是两个重要的框架和工具,它们各自为开发者提供了强大的功能。cairngorm作为一个轻量级的MVC(Model-...

    flex框架之Cairngorm框架(二)

    Cairngorm是Flex框架中的一个轻量级MVC(Model-View-Controller)设计模式实现,由Adobe社区成员Stephan J. Schmidt在2005年提出。这个框架旨在提高Flex应用的可维护性和可扩展性,通过分离业务逻辑、用户界面和数据...

    Flex开发框架cairngorm入门实例教程

    Cairngorm是一个轻量级的MVC框架,专门用于Adobe Flex应用程序的开发。这个框架的设计目的是为了提高Flex项目的可维护性和可扩展性,通过分离业务逻辑、视图和控制层,使得代码更加模块化。在Cairngorm中,模型...

    cairngorm中文版

    **Cairngorm框架详解** Cairngorm框架是Adobe Flex开发中的一个核心MVC(Model-View-Controller)框架,它为构建可扩展、可维护的富互联网应用程序(RIA)提供了一种结构化的方法。Flex是一种基于ActionScript 3.0...

    Cairngorm.swc

    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 ...

    Flex+J2EE实例(cairngorm+blazeDS+hibernate+spring)part1.

    2. **Cairngorm**:一种专门为Flex设计的MVC架构模式框架,简化了Flex应用程序的设计和开发过程。 3. **BlazeDS**:由Adobe提供的一款免费的远程消息传递和Web服务产品,用于在Flex或AIR客户端与Java或.NET后端之间...

    flex Cairngorm.swc

    cairngorm.swc供需要的朋友急用

    Cairngorm框架配置

    ### Cairngorm框架配置详解 #### 一、Cairngorm框架概述 Cairngorm是一种专门为Adobe Flex设计的模型-视图-控制器(Model-View-Controller, MVC)架构模式框架。它通过清晰地分离应用逻辑,使得开发更加模块化、可...

    Flex+J2EE实例(cairngorm+blazeDS+hibernate+spring)完整版本

    一个 Flex+J2EE实例(cairngorm+blazeDS+hibernate+spring) 本实例为一个 flex 与 java通信项目。前端采用cairngorm框架,后台 采用hibernate+spring 每个部署 步骤,附详细 图文解释。旨在 采用 一种快速开发 ...

    Flex 使用 Cairngorm 框架与java进行数据交互

    前台FLex工程(单独工程Cairngorm)使用Cairngorm框架与后台java工程(FLexToJava)进行数据交互。功能点: ①flex提交表单保存到数据库; ②flex向后台请求,后台返回List集合,flex将集合填充到combox 附带:...

    [cairngorm入门]introducing_cairngorm.pdf

    ### Cairngorm框架入门知识点详解 #### 一、Cairngorm框架简介 - **定义与背景**:Cairngorm是一种专为Adobe Flex应用程序设计的模型-视图-控制器(MVC)架构模式。它是由Adobe Systems Inc.在2004年推出的一种...

    Cairngorm-Flex.zip_Cairngorm_flex

    Cairngorm框架是Adobe Flex开发中的一种著名轻量级MVC(Model-View-Controller)框架,由Adobe公司的专业团队设计,旨在提高Flex应用程序的可维护性和可扩展性。这个框架的核心理念是通过分离业务逻辑、用户界面和...

    Cairngorm.swc+Cairngorm+开发文档中文版.rar 套装

    Cairngorm是一个著名的ActionScript 3框架,主要用于构建大型的、可维护的Flex和Adobe AIR应用程序。这个“Cairngorm.swc+Cairngorm+开发文档中文版.rar”套装提供了一个完整的Cairngorm框架,以及相关的中文开发...

    cairngorm 框架介绍(详细介绍了Adobe Cairngorm框架)

    **Cairngorm框架详解** Adobe Cairngorm是一款开源的Model-View-Controller(MVC)框架,专门针对Adobe Flex和ActionScript 3.0开发。这个框架为构建可维护和可扩展的富互联网应用程序(RIA)提供了强大的支持。...

    cairngorm3实践源码

    **cairngorm3实践源码详解** Cairngorm是Adobe Flex/AIR社区中一个著名的轻量级MVC框架,它为ActionScript 3.0应用程序提供了结构和设计模式,便于开发大型、可维护的项目。这个压缩包包含的是Cairngorm3的实践源码...

    Cairngorm.swc文件

    Cairngorm.swc文件是Adobe Flex开发中的一个重要组件,它是Cairngorm框架的核心库。Cairngorm是一个轻量级的MVC(模型-视图-控制器)设计模式框架,专门用于构建富互联网应用程序(RIA)。这个SWC文件包含了一系列类...

Global site tag (gtag.js) - Google Analytics