Cairngorm HelloWorld

虽然用Cairngorm做过项目,不过理性认识还是不够,Baidu了一下,结合一个入门实例谈谈我的理解。

Cairngorm是Abode推出的Flex RIAs框架,其实是MVC的发扬光大,它由七大部分组成。

  1. Model(数据模型M):使用singleton(单例)模式共享变量;
  2. VO( Value Object):储存特定值对象变量。
  3. VIew(视图V):将Model数据绑定到组件并广播Cairngorm Event;
  4. Controller(控制器):侦听Cairngorm Event并将其映射到Cairngorm Command;
  5. Command(命令):调用Cairngorm Delegate或其它Command,并更新Model;
  6. Delegate(委托):实例化RPC(远程过程调用)并将其结果返回给Command;
  7. Business(业务):定义RPC。

下面是Cairngorm RIAs的工作流程:
http://flexheads.com/cairngorm/cairngorm2_rpc.swf

Cairngorm代码也可以用工具生成的:

CairngormCreator:
http://www.tylerbeck.com/CairngormCreator/main.swf

Cairngen:
http://www.ericfeminella.com/blog/cairngen

Cairngorm文档:


http://www.cairngormdocs.org/

Cairngorm视频教学:


http://www.davidtucker.net/2008/04/01/cairngorm-videos-available-as-flv-downloads/

为了便于入门理解,我上传了一个Cairngorm+FluorineFx的入门应用,其中HelloModelLocator.as实现 了单例实例,并共享变量returnMessageHelloView.mxml构成应用的UI,用一个Label组件绑 定了returnMessage,并广播HelloEvent事件。HelloEvent.as扩展了Event类,并新增message事件对象。HelloController.as侦听HelloEvent事件,并将其映射到HelloCommand类。HelloCommand.as调用HelloDelegate类的echo方法,并将其结果更新到Model。HelloDelegate.as调用service的对应方法,由构造参数中传递进来的mx.mpc.IResponder接口的实现类来处理响应。最后在Services.mxml中定义RemoteObject。

创建Cairngorm RIAs应该注意:

  1. 编译前要加入Cairngorm.swc和fds.swc库路径或其资源路径;
  2. 一般来说,一个业务类需要一个对应的代理类,简单业务可以省去代理类;
  3. Flash Remoting一般支持类的映射,建议使用Value Object,便于扩展调试。

这个实例很简单,感兴趣的话可下载工程文件参考。

HelloWorld.cs还是用以前的,见
http://www.riafan.com/fluorine-remoting-base

发表评论