Cairngorm简介

Cairngorm简介(转)
什么是Cairngorm?
 
Cairngorm(中文名:“烟水晶”?)是一个轻量级的Flex RIA程序开发框架,从而使程序可扩展性、可维护性都大大提高,其本身并不是一个完整的企业应用,它只是提供了一个开发骨架,Adobe称之为体系。

 
Cairngorm体系
 
主要包括以下几个部分:
 
1、VO(Value Object)
 
IValueObject 和 ValueObject 只是为了提高VO类的可读性,表示该类是一个ValueObject类,其它没有任何实际作用。其可能是为将来而设计的,我们在应用过程中不需要实现任何接口函数。
 
2、Model
 
定义了ModelLocator接口,我们只需要实现该接口,把所需要绑定的数据保存在这里。通常我们都采用单例模式(Singleton Pattern)来实现,并按照项目模块进行分类,避免把整个项目的所有数据都保存在一个类文件中。换句话说,ModelLocator是整个系统的数据 中心。
 
  3、View
 
 有ViewHelper.as 和 ViewLocator.as,在Cairngorm2.2.1版本中已被废除。
 
  4、Commands
 
定义了ICommand接口,该接口定义了一个唯一需要实现的方法execute(),这其实就是典型的命令模式,我们只要实现此接口,并不需要关心其具体实现方式。
 
  5、Control
 
 含三个基类:CairngormEvent、CairngormEventDispatcher和FrontController。

(1)CairngormEvent:

继承flash.events.Event,其包含一个data成员,用来传递参数数据之用。

(2)CairngormEventDispatcher:

采用单例模式(Singleton Pattern),用来广播用户发起的自定义动作事件。

(3)FrontController:

相当于控制中心,在这里你要做的工作是将事件(CairngormEvent)和命令(Command)之间的映射关系注册在它的
成员commands(Dictionary类型)中,通过下面的类似方法进行注册:
addCommand( GetProductsEvent.EVENT_GET_PRODUCTS, GetProductsCommand );

以后,凡是CairngormEventDispatcher广播出来的事件,首先都会在这里查找,找到对应的event对应的command后,
便执行Command的execute()方法。


FrontController必须要在你的系统中实例化,具体的实例化方法如下:

1 < mx:Application xmlns:control ="com.domain.projectname.control.ShopController" >
2 ...
3 < control:ShopController id ="controller" />
4 ...
5 </ mx:Application >
 
  6、Business
 
 IServiceLocator接口:

提供了HTTPService、WebSercice、RemoteObject三种RPC服务。使用时候,将需要的RPC服务登记在该接口中,
以mxml形式采用单例模式(Singleton Pattern)实现IServiceLocator,如下面使用例子:

 
1 < cairngorm:ServiceLocator
2 xmlns:mx ="http://www.adobe.com/2006/mxml"
3 xmlns:cairngorm ="http://www.adobe.com/2006/cairngorm" >
4
5 < mx:RemoteObject id ="productService" destination ="productServiceImpl" showBusyCursor ="true" >
6 </ mx:RemoteObject >
7
8 < mx:RemoteObject id ="creditCardService" destination ="creditCardServiceImpl" showBusyCursor ="true" >
9 </ mx:RemoteObject >
10
11 < mx:HTTPService id ="XXXService" url ="URL" showBusyCursor ="true" useProxy ="false" resultFormat ="e4x" >
12 </ mx:HTTPService >
13
14 </ cairngorm:ServiceLocator >
 
 需要在系统中实例化,具体的实例化方法如下:
 
1 < mx:Application xmlns:business ="com.adobe.cairngorm.samples.store.business.*" >
2 ...
3 < business:Services id ="services" />
4 ...
5 </ mx:Application >
 
在某个Delegate类中的使用方法:
 
1 this.service = ServiceLocator.getInstance().getRemoteObject( "productService" );
 
之后,就可以进行相关的函数调用了。
 
后记:
 
发现《基于Cairngorm的Flex应用程序设计》中文版电子书,顺便提供下载: 基于Cairngorm的Flex应用程序设计.pdf (1.00 mb)
 
转自: http://www.soave.com.cn/post/2008/06/what-is-cairngorm.aspx



学习Cairngorm站点、文章收集.

1:http://www.davidtucker.net/category/cairngorm/   入门强烈推荐

*http://www.cairngormdocs.org/tools/CairngormDiagramExplorer.swf     cairngorm图解法表示

  http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm 推荐

2:http://opensource.adobe.com/wiki/display/cairngorm/Developer+Documentation

3:http://www.adobe.com/devnet/flex/articles/graduating_pt1.html

4:http://www.adobe.com/devnet/flex/articles/cairngorm_pt1.html

5:http://jessewarden.com/2007/08/10-tips-for-working-with-cairngorm.html

6:Cairngorm学习——使用WebService和HTTPService服务

7:AIR也可以Cairngorm   --     http://www.ericfeminella.com/blog/2007/07/16/air-cairngorm-air-extensions-for-cairngorm/

实例:http://www.duzengqiang.com/blog/article.asp?id=198     Flex Example: HTTPService & Cairngorm 2.2


你可能感兴趣的:(Cairngorm简介)