本系列文档力求通过简洁的讲解和简单的例子使开发者能快速地掌握基于Cairngorm的Flex程序的设计过程,在后面的文档中后台语言将以JAVA为例,并介绍笔者在实际开发过程中应用的比较稳定的Flex+J2EE框架,希望能对想学习或应用Cairngorm的开发者提供一定的帮助。 本文档的目标读者是这样的开发者:他至少有点熟悉Flex,开发过一些基于Flex的应用程序,有点熟悉Cairngorm框架或有一些设计模式的基础,后面的文档要求读者最好了解一些JAVA的知识。由于本人还要上班,所以后续文档可能发布的有点慢,请读者见谅。 什么是Cairngorm呢?Cairngorm从根本上来说是将程序代码按照逻辑功能(按数据、用户视图、以及起控制作用的代码)分块的一种方法论。这个方法论被归纳为MVC,或者说是Model(模型),view(视图),和Control(控制).熟悉struts的网友可结合Struts的MVC模式来理解。 1,Cairngorm的6大元素 6大元素包括:VO,view,model,control,commands,business 1.1,ValueObject,也就是Cairngorm六大元素中的VO,它提供数据的“结构”。例如一本书由书名、作者、和价格组成,那么这个ValueObject(这里要取名为BookVO)就包含bookName,bookAuthor,bookPrice等属性。ValueObject为Model的ModelLocator提供某些数据的数据“结构”,以便给view绑定。 1.2,View(视图):一个或多个Flex组件(button,panel,comboBox,label等等)组合在一起开成的一个特定的个体,使用model的ModelLocator中绑定的数据,并且针对用户的交互操作(点击,鼠标滑过,拖拽等)产生的自定义Cairngorm Event. 1.3,modelLocator:装着所有的与view绑定的变量(包括VO和其它类型数据),当ModelLocator中的变量变化后,view相应显示的数据也随之变化,反之ModelLocator中的变量也发生变化。所以只需要操作modelLocator中的变量就能可达到view的不同显示的目的。 1.4,control(控制):包括FrontController(前端控制器)和events(自定义事件),前端控制器监听不同的events,并且将不同的event映射到不同的Cairngorm Command进行处理,自定义的event可挟带任何形式的数据带到command中,从而达到数据传送的目的。Event 和 command 的对应关系就类似于struts1.2的struts-config.xml文件。 1.5Command(命令):处理业务逻辑,主要的处理逻辑都在它的execute方法中,在execute方法中,通过调用Cairngorm Delegates 或者 其它的Commands,甚至什么都不调用,以达到更新ModelLocator存绑定的变量的目的。如调用了CairngormDelegates,一般用onResult接收CairgormDelegates执行成功时的返回值,用onFault处理CairngormDelegates执行失败的情况。 1.6,business包括Delegate(代理)和Service(服务):Delegate由一个Command创建,它将远程过程调用(http service ,web Service,DataService等)实例化并将结果返回给该Command。Service定义连接到远程数据库的远程过程调用(Http service,web Service,DataService等),总结为command通过Delegate调用Service.后面的文档将举一个通过Delegate调用服务端Java的DataService的例子。 2,Cairngorm的工作流程 Cairngorm的工作流程可总结为以下6句话: 2.1,Front Controller Listens for User Gestures 2.2,Commands Do All the Work Command几乎做了所有工作。系统的业务逻辑大部分都集中在Command中,所以我们的主要时间是花在写Command. 2.3.Delegate Server-Side Business Logic to Business Delegates 2.4.Business Delegate Finds Services with the Service Locator Command调用Business Delegate 后,Business Delegate 通过Service Locator来找到相应的RPC services,然后执行实现从服务器端取数据。 2.5.Transfer Data as Value Objects 2.6.Store State in the Model Locator and Let Model Notify View
下图为从网上找到的Cairngorm工作流程的图解,我认为能很好地说明Cairngorm工作流程,可以说把这个图理解好了,便已经理解好了Cairngorm的工作流程:
本文档中的某些内容难免参考了其它一些文章,如有相似之处,望见谅
|