• Cairngorm学习(上)


    一、什么是Cairngorm

    Cairngorm是一个轻量级的Flex RIA程序开发框架。是为了方便FLEX开发企业级应用而开发的一个微架构。它的重点在于给你一个指导性原则,而并非具体实现。

    二、Cairngorm的作用

    和大多数的框架一样,Cairngorm的主要作用是对开发Flex应用程序应用了一系列的设计模式,从而使开发出来Flex程序可扩展性,可维护性都大大提高。其本身并不是一个完整的企业应用,它只是提供了一个开发骨架,Adobe称之为体系。

    三、Cairngorm的六大要素

    如果你熟悉MVC架构的话,那么对下面的六大要素一定不会陌生,它是在MVC的基础上,加入了FLEX的事件机制(比较类似于在web开发中,用户发起的HTTP请求)。对于下面的六大要素,会在以后的代码里面进行详细的解释,这里只是有个大概的说明。

    1、View(视图):

    最终展示给用户的界面。由一个或多个Flex组件组合而成。根据需要,View里面的数据大部分被ModelLocatorl绑定(便于数据刷新),并且针对用户的交互操作(点击,鼠标滑过,拖拽等)产生的自定义Cairngorm Event.

    2、ValueObject(数据结构):

    它提供数据的“结构”。例如一本书由书名、作者、和价格组成,那么这个ValueObject(这里要取名为BookVO)就包含bookName,bookAuthor,bookPrice等属性。ValueObjectModelModelLocator提供某些数据的数据“结构”,以便给view绑定。

    3、ModelLocator(数据模型):

    装着所有与view绑定的变量(包括VO和其它类型数据)。它采用的是单例模式,当用户的操作完成以后,我们只需要更改ModelLocator里面的数据,则view相应显示的数据也随之变化(在WEB开发中,页面刷新导致了数据更新,而在flex中,用数据绑定的概念来取代页面刷新,类似于ajax的异步刷新,只不过所有的操作都由flex内部完成)。

    4、Front Controller(前端控制器)

    前端控制器监听用户派发的所有的event,并且将event映射到不同的Command进行处理,用户派发的自定义event可挟带任何形式的数据带到command中,从而达到数据传送的目的。

    5、Command(命令)

    处理业务逻辑。主要的处理逻辑都在它的execute方法中,在execute方法中,通过一系列的运算,以达到更新ModelLocator中绑定的数据变量的目的。如果需要和后台服务器通讯得到数据,则调用CairngormDelegates,一般用onResult方法接收CairgormDelegates执行成功时的返回值,用onFault方法处理CairngormDelegates执行失败的情况。

    6、Business包括Delegate(代理)Service(服务)

    Delegate由一个Command创建,它将远程过程调用(http service ,web Service,DataService等)实例化并将结果返回给该CommandService定义

    连接到远程数据库的远程过程调用(Http service,web Service,

    DataService),总结为command通过Delegate调用Service.后面的文档将举一个通过Delegate调用服务端PHP的DataService的例子。

    四、Cairngorm的工作流程

    Cairgorm工作流程可总结为以下6句话:

    1、前端控制器监听用户的行为。

    注意它只是监听事件并把事件映射到相对应的Command,并不会进行任何的业务处理。

    2、Command几乎做了所有操作。

    前端控制品(FrontController)监听到事件与命令有匹配时,便告诉命令(Commmands)调用execute()方法处理事件。系统的业务逻辑大部分都集中在Command中,所以我们的主要时间是花在写Command.

    3、把服务器端的业务逻辑委托到Bussiness Delegates中。

    命令(Commands)执行时,它只是进行数据运算,而并不关心数据的来源。如果需要从服务器端获取数据,此时命令 (Commands)更喜欢把它委托给其它类去操作。所以需要处理服务器端业务逻辑的时候,你都可以委托给命令(Commands)可以调用的 Business Delegate类去处理。

    4、Business Delegate通过Service Locator来找到相应的RPC services

    Business Delegate给命令(Commands)和RPC Services提供一个无缝接口。Business Delegate通过查找和匹配 PRC Services的名称来调用services并返回结果给命令(Commands)。命令(Commands)要从Business Delegate获取返回结果数据必须通过IResponder接口(mx.rpc.IResponder),只有这样Business Delegate才知道命命令(Commands)有onResult()和onFault()来处理返回的数据。

    5、根据服务器返回的数据,重新为Value Objects赋值。

    6、Store State in the Model Locator and Let Model Notify View

    由于Value ObjectsModel Locator绑定了,一但Value Objects发生了变化,则页面会自动刷新。如在登录过程中,不论成功与否,所有的提示信息都不需要另外进行操作,只需要一开始建立以个提示信息的Value Objects,并且绑定在Model Locator即可(在传统的web开发中,我们总是需要重新刷新一遍该页面才能得到提示信息)。

    下图为从网上找到的Cairngorm工作流程的图解,我认为能很好地说明

    Cairngorm工作流程,可以说把这个图理解好了,便已经理解好了Cairngorm的工作流程:

  • 相关阅读:
    codeforces_346A Alice and Bob(数学)
    POJ_2533 Frogger 最小瓶颈路
    hdu1205_吃糖果
    POJ_2503 Babelfish 字典树
    在PC上登录多个微信账号
    查看百度云用户的分享文件
    QQ邮箱收不到ins发的验证码
    试用Fakeapp
    为什么使用网易邮箱
    插入央视网站视频
  • 原文地址:https://www.cnblogs.com/tianlangshu/p/2477059.html
Copyright © 2020-2023  润新知