Cairngorm为Flex和AIR项目奠定了成功的基础。
最新Cairngorm3包括:
- Guidelines使用指引 :描述了我们的首选客户端体系架构;
- Tools:工具库帮助你确保使用Cairngorm时的质量、一致性和效率;
- Libraries :类库为你减少解决问题时的重复代码。
相较于先前的Cairngorm 2架构,最新的Cairngorm3提供了兼容。因此,如果您正在使用Parsley,Spring,puremvc,Swiz,Mate或其他类库,Cairngorm也是可以胜任的。欲了解更多信息,请阅读入门指南 ,或开始探索使用指引 , 工具库和类库 。
Cairngorm 知识补习:
Cairngorm 简介
Cairngorm 3 入门
Cairngorm 3 结构概述
Cairngorm为Flex应用程序的提供参考架构,设计旨在让事情保持简单。它描述了一个大型应用程序的构建出更小的单位的方式。
一个Cairngorm应用由以下组成:
- Architectural Layers (结构层)通过不同的功能分离类
- Functional Areas (功能区)这组类涉及相同区域的功能
- Design Patterns (设计模式)一致的协调方式
结构层
不同功能的类,归属到不同的层,从而可以单独的改变。因此,如果视觉设计需要调整,大部分的改变只是在表示层的类,而不是其它部分的代码。
Cairngorm 通过驱动设计模式来描述层:
- Presentation -表示:给用户展示数据及收集输入,如UI
- Application – 应用:执行应用的操作,如保存表单
- Domain – 域:模型的应用程序的业务涉及,如表单数据
- Infrastructure – 基础设施:坐标对像和与其它系统交互,如与服务器对话
下面所示,在高层级的代码,可以直接使用它下面层级的代码。在另一个方向,通过事件侦听,回调函数和其它方式来间接交互。
继续阅读了解结构层之间的关系,功能区和设计模式的关系。以后,你可以参考每个结构层的详细指南。
功能区
应用程序通常是由不同的功能区组成,像一个发布的编辑器和一个新闻列表。功能区的代码应该集合在一起,与其它功能区的代码区分开来,因此,它可以独 立的开发,测试。
对于一个功能区的代码应该放在一个单独的源码包下。虽然一个Flash Builder 项目可能包含多个功能区,通常的做法是把它们提取到一模块或者子应用中,与应用项目分开来储存。共享基础代码,像可再使用的组件和公用类,最好提取到一个 库项目中。
功能区通常包含它们自已的展示和应用层。有时它们包含自己的域模块,但有时与其它功能区共享一些域消息。在这种情况下,共享的域模块通常是被提取到 库项目中,那样功能区可以依赖。
功能区之间交互是通过接口。这些通常是由事件和as接口组成。共享基础设施,如消息传递框架或服务注册,往往是用来方便交流。
Functional areas also reuse components, styles and skins for a consistent look and feel and to prevent code duplication. These are a kind of infrastructure, like the components in the Flex SDK, that should be designed without knowledge of the particular business domain of an application.
功能区也重用组件,样式和皮肤,防止代码重复。这是基础设施的一种,像Flex SDK中的组件,设计的为没有特定业务相关的。
设计模式
Design patterns are repeatable solutions to commonly occurring problems in software design.设计模式是解决在软件设计中产生的重复问题,Cairngorm 编录了一些在Flex有效的设计模式。它们可以应用在功能区内部和跨层以带来巨大代码基础的一致性。例如,Command模式是提倡封装操作,Presentation (展示)模式是提倡移除状态和可视组件的逻辑。
Cairngorm 类库(Libraries)
Cairngorm 3提供了一系列基于Cairngorm许可发布的Flex类库。
这些类库通过提供ie导航、对象关系映射、验证、模块加载、减少view行为、任务处理和弹出管理,来支持Cairngorm 3架构。
在Cairngorm指引(GuideLines)中描述的 Cairngorm 3架构也可使用第三方库和框架来提供。一些Cairngorm3类库被作为第三方框架的扩展来实现。目前,所有扩张的支持Parsley应用框架和导航库额外提供了一个延伸到Swiz框架的扩展 。
不过,其他Cairngorm库,如Observer,Popup,Task,Persistence,Design by Contract和Validation是独立于任何第三方框架的。
• Overview of Libraries 类库概览
• Maven and Bugbase Maven 和Bugbase
• Expectations on Versioning 版本预期
类库概览
每个库的简短摘要如下,连同给下载,源代码和文档的链 接。
• Design by Contract Library 订单设计库
• Observer Library 观察者库
• Popup Library 弹出库
• Task Library 任务库
• Validation Library 验证库
• Persistence Library release candidate 持久性库 发布候选
• Navigation Library release candidate (Requires Parsley or Swiz) 导 航库 发布候选(需要Parsley或Swiz)
• Module Library beta (Requires Parsley) 模块库 试用版(需要Parsley)
• Integration Library alpha (Requires Parsley) 集成库 alpha版(需要Parsley)
Design by Contract Library 订单设计库
订单设计库允许在订单设计之后声明前置和后置条件。其使用的条件编译,确保产生的代码不受影响。
• Contract 1.1:swc-flex4 swc-flex3 文 档
• Browse the latest source code and tests 浏览最新的源代码和测试
• 如何使用Cairngorm的订单设计库
Observer Library 观察者库
Cairngorm观察者库提供了一系列非可视组件用于在MXML声明,他们观察其他对象,并对某种方式的变化作出反应,同时触发view行为。这些组件有助于减少MXML组件脚本块的逻辑。
• Observer 1.8 : swc-flex4 swc-flex3 文档
• ObserverParsley 1.8 : swc-flex4 swc-flex3 docs (需要 Parsley 2.2.2)
• 浏览最新的源代码和测试
• 如何使用Cairngorm的观察者库
Popup Library 弹出库
Cairngorm弹出库包含管理打开、关闭和弹出窗口的一般行为的一些组件。他们的目的是尽量减少MXML组件脚本块的逻辑和降低整个应用程序管理多个弹出窗口的重复代码。
• Popup 1.7 : swc-flex4 swc-flex3 文档
• PopupParsley 1.7 : swc-flex4 swc-flex3 文档 (需要 Parsley 2.2.2)
• 浏览最新的源代码和测试
• 如何使用Cairngorm弹出库
Task Library 任务库
Cairngorm任务库提供了一个顺序和并行执行任务的抽象。它可能被用于协调一个应用程序的启动序列,或管理需要特定的顺序进行的一系列异步进程。
• Task 1.7 : swc-flex4 swc-flex3 文档
• 浏览最新的源代码和测试
• 如何使用Cairngorm的任务库
Validation Library 验证库
Cairngorm验证库旨在简化用户输入的数据和其他数据的验证。作为替代个别声明验证器并手动调试,多个验证器可以使用ValidatorGroup定义。整个group的有效性可以被统一定义。验证器组可以嵌套和从视图分离到一个应用程序的其他层,例如一个范围模块(domain model)。额外的组件被监控验证规则和更新视图组件以突出验证错误。
• Validation 1.8 : swc-flex4 swc-flex3 文档
• Validation 1.9 : swc-flex4 swc-flex3 文档
• 浏览最新的源代码和测试
• 如何使用Cairngorm的验证库
Persistence Library - release candidate 持久性库- 发布候选
持久性库简化了一个Adobe AIR应用程序和SQLLite数据库之间通信。双方使用不同类型的系统(关系化SQL与面向对象的 ActionScript)。 对象关系映射(ORM)库遵循iBATIS的做法。
• Persistence 0.9 : swc-flex4 文档
• 浏览最新的源代码和测试
• 如何使用Cairngorm的持久性库
Navigation Library - release candidate (Requires Parsley or Swiz) 导航库- 候选版本(需要Parsley或Swiz)
Cairngorm导航库提供工具来减轻点至点,层次和递延导航,全局和局部的历史跟踪,向导,进入和退出侦听的工作量。它通过允许专用的对象控制导航关注点,可以降低大量脚本块逻辑。目前的版本是作为一个Parsley和Swiz的延伸。一个Spring框架的ActionScript扩展 是目前正在开发 。
• NavigationParsley 0.8 : swc-flex4 swc-flex3 文档 (需要 Parsley 2.2.2)
• NavigationParsley 0.9 : swc-flex4 swc-flex3 文档 (需要 Parsley 2.2.2)
• NavigationSwiz 0.1 Alpha : swc-flex4 文档 (需要 Swiz 1.0.0 beta)
• NavigationSwiz 0.9 Alpha : swc-flex4 docs (需要 Swiz 1.0.0 RC)
• 浏览源代码和测试
• 如何使用Cairngorm导航库
Module Library - beta (Requires Parsley) 模块库- beta版(需要Parsley)
Cairngorm模块库旨在简化配置,渲染和模块化内容载入。加之它提供灵活的模块沟通。它包含了基础设施类,视图组件,一个用于加载和沟通Parsley消息回应模块化内容的机制。
• Module 0.8 : swc-flex4 swc-flex3 文档 (需要 Parsley 2.2.2)
• Module 0.9 : swc-flex4 swc-flex3 文档 (需要 Parsley 2.2.2)
• 浏览最新的源代码和测试
• 如何使用Cairngorm的模块库
Integration Library - alpha (Requires Parsley) 集成库- alpha版(需要Parsley)
该集成库提供了公共与客户端构造层沟通的松耦合结构。除了发送和接收数据,它也提供了结构来管理全局的错误处理,解决冲突,并提供一个松耦合的方式表示组件获得过程和错误信息。目前的RPC支持、数据管理使用LCDS 和LocalConnection。在当前版本 IntegrationParsley和IntegrationDMS库依赖于Parsley框架。该集成库包含有IDataCache实用程序不依赖于Parsley框架,但它使用Spicelib实用工具库反射元数据。你可以使用IdataCache伴随任何IoC框架。
• Integration 0.11 : swc-flex4 swc-flex3 文档 (独立框架, 包含 IDataCache utility)
• IntegrationDMS 0.9 : swc-flex4 swc-flex3 文档 (需要 Parsley 2.2.2)
• IntegrationDMS 0.11 : swc-flex4 swc-flex3 文档 (需要 Parsley 2.2.2)
• IntegrationRPC 0.9 : swc-flex4 swc-flex3 文档 (近期版本将改名为 IntegrationParsley) (要求 Parsley 2.2.2)
• IntegrationParsley 0.11 : swc-flex4 swc-flex3 文档 (需要 Parsley 2.2.2)
• 浏览最新的源代码和测试
• 如何使用Cairngorm的集成库
Maven and Bugbase
3.0.11版本的Cairngorm发表在Cairngorm 3 Maven仓库http://opensource.adobe.com/svn/opensource/cairngorm3/maven-repository
我们鼓励你浏览trunk的源代码 。
欲了解更多信息和查看svn源代码中,点击这里 。你可以使用Maven建立这个版本从http://opensource.adobe.com/svn/opensource/cairngorm3/trunk/build-parent/