zoukankan      html  css  js  c++  java
  • Flex Cairngorm简介

    Cairngorm为Flex和AIR项目奠定了成功的基础。 

    最新Cairngorm3包括:

    1. Guidelines使用指引 :描述了我们的首选客户端体系架构;
    2. Tools:工具库帮助你确保使用Cairngorm时的质量、一致性和效率;
    3. Libraries 类库为你减少解决问题时的重复代码。

    相较于先前的Cairngorm 2架构,最新的Cairngorm3提供了兼容。因此,如果您正在使用Parsley,Spring,puremvc,Swiz,Mate或其他类库,Cairngorm也是可以胜任的。欲了解更多信息,请阅读入门指南 ,或开始探索使用指引 , 工具库和类库 。

    Cairngorm 知识补习:

     
    Cairngorm中文名:“烟水晶” 。
     
    是一个轻量级的Flex RIA程序开发框架,从而使程序可扩展性、可维护性都大大提高,其本身并不是一个完整的企业应用,它只是提供了一个开发骨架,Adobe称之为体系。 Cairngorm主要就是对开发Flex应用程序应用了一系列的设计模式,从而使开发出来Flex程序可扩展性,可维护性都大大提高。
     
    核心体系:
     
    1. Business(业务逻辑部分)   
    2. Command(命令部分)   
    3. Control(控制部分)   
    4. Model(数据模型)   
    5. View(界面视图)   
    6. VO(ValueObject)

     

    Cairngorm 简介

    什么是Cairngorm ?怎么样开始应用它?结构指南详细地描述了我们最完美的客户端结构。最佳实践简单地例出了一些做法建议,准备领导团队开发。
     
     
    1. 介绍
     
    Cairngorm 覆盖面很广,这些章节介绍主要功能和并描述如何在深入到更详细的准则和最佳实践前开始使用Cairngorm 。
     
    开始使用
    Cairngorm结构概述
    一个简单的应用实例讲解
    一个模块的应用实例讲解
     
    2. Architecture Guidelines
     
    Cairngorm 建议通过不同的功能安排代码到层中来整理结构,下面的指南详细地介绍了结构:
     
    Presentation Layer 表示层
    Application Layer 应用程序
    Domain Layer 域名层
    Infrastructure Layer 基础设施层
    Modular Development 模块化开发
    Options in Loose Coupling 选项松散耦合
    Options to Construct, Retrieve and Isolate Objects 选项构建,检索和分离对象
     
    3. Best Practices
    最重要的是以最好的方式利用Flex SDK提供的功能
     
    Best Practices for Agile Unit Testing
    Best Practices for Performance
    Best Practices for Logging
    Genuinely Reusable Presentation Components
    Quality Guidelines

    Cairngorm 3 入门



    最好的Cairngorm入门方式取决于您自己的背景。你是新的使用者,老用户或访客?
     
    新的使用者 –Cairngorm对你来说是新的事务。你该如何开始?
    老用户 -你已经熟练使用Cairngorm 1&2,所以这次有什么新特性?
    访客 -你准备使用其他的框架,但也许Cairngorm3也在被考虑的范围?
    New Comer新的使用者
     
    命名源自在苏格兰高地的东部的一个山脉,Cairngorm的是由Adobe技术服务团队为开发者和技术架构师提供的创建成功企业Flex项目的一个资源。Cairngorm 发音kern-,gȯrm,你可能在美国口音或在苏格兰口音中听到过 。
     
    Cairngorm开始于2002年,作为ActionScript类库,用于创建基于Model-View-Controller (MVC)模式的应用。这种情况持续一段时间,并在2004年发展成为开放源码项目。在此期间,许多第三方框架也在开发中和发布出来,比较典型的是Inversion-of-Control(IoC)框架。在2009年,Cairngorm 的范围增加,将MVC框架发展为一个更广泛的基于指引( Guidelines )、工具( Tools )和类库( Libraries )的框架。
     
    为了入门Cairngorm,可以从Cairngorm的指南页面开始,在这里你会发现一些介绍材料和一个示例应用程序。这些内容解释了Cairngorm 的体系结构 ,这是我们架构Flex应用程序的首选方式。在介绍材料中可以找到更详细的有关Cairngorm体系结构的信息,以及覆盖Flex开发涉的许多领域的一些最佳练习文档。这些可以被用来帮助开发团队寻找一条正确的道路。
     
    除了指南,Cairngorm还提供了工具库和类库 。工具库有助于确保高效率和高品质的Flex应用交付,而类库在富互联网应用解决经常出现的问题。
     
    Old Timer老用户
     
    如果您已经熟悉Cairngorm 1&2,您可能有兴趣听取Cairngorm3发生了什么变化。与其核心的模型视图的Model-View-Controller模式,Cairngorm 3包含了适用更广泛的guidelines,工具库和类库。Cairngorm旨在帮助开发人员提供Flex和高效的第三方框架。
     
    Cairngorm 指引(Guidelines)描述了我们的首选的客户端架构,它被称为Cairngorm架构。它包含多种模式,其中一些能被有经验的Cairngorm用户立即熟悉。例如,命令模式仍是被推荐用来封装应用程序的执行方法。同样,models和services通过Service Locator和Model Locator间接声明view。然而,Cairngorm 3采用新途径来访问models和services,如使用一个Inversion-of-Control(IoC)容器在需要时自动注入。
     
    原来Cairngorm类库仍然是Cairngorm 3的一部分,但这个版本尚未对其更新。它可以发现在Cairngorm的类库(Libraries)网页侧边的一个较新的Libraries收藏。此外, Cairngorm的工具(Tools)页面描述我们所提供的各种工具,这些都是我们发现的对于确保项目质量非常有用处的。这些服务包括商业自动化测试(automation testing)产品,简单的Ant脚本测试套件和清理的MXML文件(cleaning up MXML files)。
     
    要迁移Cairngorm 2至3,你应该先阅读Cairngorm的Guidelines ,了解你的现有客户端架构加以改进。这可能需要引入一个IoC容器或简单精炼的方式来使用原来的Cairngorm库。例如,较好的方式是各自以自己的models和services分散、分割成不同功能区务。在阅读的指引(Guidelines)之后,你可以评估Cairngorm的工具库(Tools) ,以决定你的开发进程是否有需要加强的地方。最后,您可能会浏览一下Cairngorm Libraries ,看看是否有适用于你所面临问题的代码解决方案,。
     
    Visitor 访客
     
    感谢您读到这里。如果你已经有乐于使用新的第三方框架创建Flex项目,那么听到Cairngorm发生了变化可能会感兴趣。在基于Model-View-Controller(MVC)的模式中,Cairngorm形成了一套独特的guidelines、工具和库,并可以通过框架来提供。
     
    Cairngorm指引(Guidelines)描述了一个可以使用任何流行的IoC框架实现的客户端的架构,如伴随一般的Flex SDK最佳实践的应用的Parsley,Swiz或Spring框架。这些指南和最佳实践可以帮助团队交付高质量的应用程序。
     
    Cairngorm工具库(Tools)页面描述了一些工具,这些工具在我们接触过的在大型企业项目开发过程中是非常有价值的。这些服务包括为商业产品自动化测试,以简单的Ant任务生成单元测试套件和清理的MXML文件。该工具的重点是实现在交付过程中的质量和灵活性。
     
    Cairngorm 类库(Libaries)也可能会让你有兴趣。那里列出了一些我在我们遇到重复接触的问题,如复杂的验证要求,处理顺序和并行任务,管理弹出窗口。有些第三方库提供对这些问题他们自己的解决方案。请评估这些库和应用他们,如果他们能解决你的项目相关问题。
     

    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/

  • 相关阅读:
    dubbo和spring的@service注解区别
    mybatisplus乐观锁
    mybatis中llike模糊查询中#和$的使用,以及bind标签的使用
    mybatis的两个内置参数
    mybatis返回主键
    mybatis使用foreach进行批量保存
    jsp自定义标签
    java.lang.ClassNotFoundException:oracle.jdbc.OracleDriver
    junit测试框架
    junit断言和junit注释assert
  • 原文地址:https://www.cnblogs.com/tianlangshu/p/2476206.html
Copyright © 2011-2022 走看看