[转]选择一个Flex框架

      框架满天飞的今天,选择框架似乎是每一个开发人员必须的经历,不得不找到目前有哪些我们需要的框架,并进行横、纵向比较,做出取舍!

      对于MVC类型的框架,我们在采用传统web项目开发技术时,大多倾向于Struts2(webwork)和Spring MVC,而对于Flex的MVC框架,可以说是众说纷纭,选择不一。与此同时,真正理解MVC框架的朋友,可能更愿意为Flex构造自己的MVC模式来保证项目的MVC清晰结构,原因在于现行框架的局限性以及Flex前后端通信的便利性吧!

      为了快捷而有全面了解一下现有的Flex MVC框架,转载了博文选择一个Flex框架!为便于阅读,其内容转载如下(并做了补充):

==============================================================

本文提供了当前最流行的Flex框架,你可以根据了解来选择最适合你的团队或者项目的需求的框架。本文覆盖了 Cairngorm、Mate、PureMVC以及Swiz 框架。我特意选择了这些框架是因为它们已经被Flex show 播客提及并且或者已经被类似360|Flex 的会议所提出。

Cairngorm 框架

Cairngorm是最早最为成熟的Flex 框架。它实际上是一个微架构——它提供了一系列已经被证明可以很好的互相协作的设计模式的集合。Cairngorm采用累来自Java开发世界的笨重并且把焦点集中到了三个关键区域:处理用户行为,包装服务端交互与业务逻辑,并且管理客户端状态以及在用户界面(UI)上体现客户端状态。

在Cairngorm构建一个项目包含了拆散你的应用到若干个包中并且扩展Cairngorm的类。如下是一个Cairngorm 项目 主要包含的部分和类。

  • ModelLocator —— 作为数据存贮角色的单件——反映程序的状态。单件类的性质保证了程序中所有的组件都访问相同的数据。
  • ServeiceLocator 是另外一个单件,它作为集中存贮例如HTTPService的服务的角色存在。同样,因为该类是一个单件,所有程序中的组件都会访问相同的服务。
  • 业务逻辑被包装到了实现了命令模式的Command类中。这些类描述了程序响应用户事件的逻辑。
  • 事件会被FrontController 类处理,它会针对事件来执行相应的command类。每个程序可以回应的用户事件都必须被注册到它所符合的command类。
  • Delegate 类会被用来做远端服务访问与反馈的代理。

优点

Cairngorm是Flex社区中众所周知的,并且是一个Adobe 开源网站上的项目,有良好的支持并且一个活跃的开发者社区继续为它工作。此外,它借用了来自Java开发世界的已被证明的策略。最后,它非常适合团队开发,因为它提供了一个高级的结构化的一套方法来允许分发任务进行创建应用。

缺点

或许对Cairngrom做出的最多的批评就是它需要你去写非常多的类。在Cairngorm中,每个事件映射到一个Command;因此,你不得不为每个在你的应用中可以被触发的事件写一个对应的command类。另外,你必须要写其他的command必须用到的其他类,例如delegate。这会快速的增加一个小型应用的类的数量到一个巨大的数字。

第二,因为Cairngorm 实现了它自己的处理事件的方法,这个会把内建的Flex 事件模型变得错综复杂。它也有其他一些限制。因为每个事件都必须要有它自己的command类,你就被限制只能为每个事件提供一个响应器(responder).并且,Cairngorm事件并不会冒泡,所以如果你想要通知其他更高一级的容器,就只能自己来处理了。

第三条普遍的批评就是框架依赖于全局单例,让想要模块化和单元测试变的困难。虽然你可以从数个单例中破坏这个框架模型让这些处理简单些,但是额外的工作需求会复杂化流程。

资源

Mate 框架

Mate 是一个基于标签的事件驱动型框架。基于标签意味着它可以完全使用MXML实现。事件驱动使框架的主要焦点放在更简单的来定义事件的回应。

使用Mate来创建项目只需要两个基础的必要条件: 你必须有一个或多个事件,以及你必须有一个成为“事件映射”的MXML文件——其实就是在主要的应用程序文件中包含了一个简单的MXML文件。它定义了你想要监听的事件以及这些事件该如何被处理。你必须至少有这些文件中的一个,在需要的情况下也可以使用多个事件映射。

Mate也实现了依赖注入的思想 ——有时,适用于好莱坞原则,即 “不要给我打电话,我们会打电话给你们”.对象被这样构造出来:需要的数据会被供给或者注入到类中。也就是说,类不去呼叫外部获取数据(即“不要给我打电话”),而是接受他们所需要的数据(即(“我们会打电话给你们”))

优点

Mate 通过它对依赖注入的使用实现松耦合。因为组件不用依赖全局单例,对场景来说他们是自由人。Mate不限制你使用Flex的内建事件模型,也不会像cairngorm一样限制你每个事件都要一个单独的响应处理。Mate 的MXML文件以及标签直接并且便于使用,同时如果你卡住了,它提供了不错的文档并在网站上有大量的代码范例。

缺点

Mate只使用了MXML。所以,如果你是那种做每件事都喜欢使用ActionScript类的人,那么你就必须要调整你的正常习惯。因为Mate不会为你的应用定义一个结构,它留给你来定义。从此以后,你将会不得不协调自己的团队来确保你的所有开发人员以一个相容的方式编码。最后,如果你碰巧需要和 Adobe LiveCycle Data Services ES协作,那么请注意,Mate一般不会处理LiveCycle Data Sevices ES 提供的数据管理。

资源

PureMVC 框架

虽然Flex也可以使用PureMVC框架,但是它实际上并不是作为一个Flex框架而设计的。PureMVC的创建者希望PureMVC框架是与语言无关的。其实,如果你访问他的网站,你会发现在多种语言上的实现以及代码范例。《其实是一个ActionScript 3框架,不像Cairngorm,它并不是针对FLASH,FLEX或者其它ADOBE AS3.0类。》

PureMVC 以模型—视图—控制器模式(MVC 模式)为中心,以把项目切分到模型,视图以及控制器层为目标。PureMVC中通过是Model,View以及Controller,这三个单件类体现了这些层——而为了帮着这些层之间通讯使用了第四个单件类Façade ,同时他也作为中央存贮器的角色存在。

和Cairngorm很像,创建一个使用PureMVC框架的项目,需要分割你的项目到若干包中,然后通过继承框架的类来显现你的定制类。PureMVC 还加入了作为程序主入口点的Façade类。

优点

类似Cairngorm,PureMVC一个稳定的框架并且拥有一个庞大的活跃社区来支持它。因为它为应用需要如何被创建以及开发人员之间的标准化编码提供了一个意义明确的结构,所以它也非常适合团队开发。

缺点

由于对单件的依赖,PureMVC 很容易就获得与Cairngorm相同的批评。它并不是一个专门针对Flex的框架,所以它并不会像Cairngorm般利用MXML的特点。和Cairngorm一样,PureMVC对于事件处理拥有它自己的方法,并且它会使标准的Flex事件模型更难运作。PuremvC 是一个相当复杂的框架,相对更难快速学会。除非你的团队非常熟悉它,培训新的雇员会提高生产时间。

最后,还是和Cairngorm 一样,PureMVC框架需要创建很多类,这些创建工作会增加生产时间和项目的大小。

资源

 

 

PureMVC框架扩展类库:fabrication

用过PureMVC框架的开发者一定在开发过程中遇到一些尴尬,在使用该框架过程中多少有些不够方便,即使很小的功能也要编写许多模版代码来实现,没有更加简洁途径来达到目的。如果你有这些抱怨的话,就该关注Fabrication这个框架了, Fabrication是一个加速开发基于PureMVC框架的Flex/Flash应用的工具,它为PureMVC编程语法添加了许多有用的特色,fabrication的建立主要是为了支持多模块应用而且只使用多核版PureMVC来扩展实现。

Fabrication使用PureMVC的Pipes Utility来沟通模块之间的通讯,但是pipes之间的内部逻辑被改造而抽象成一种更加直观的Router方式。Fabrication中的一些重要特色列举如下:

  1. 消除application中facade的使用,即facade被内置在FlexApplication或者FlexModule中,无需在开发者扩展的应用中再次声明;
  2. 反射性的Mediator注册,mediator的注册无需再等到对应的viewComponent生成后进行,fabrication里面内置的组件解析器已经帮你做到将延迟生成的组件生成mediator;
  3. 反射性的Notification处理器,你不必在mediator中指定一个notification的数组,相反你只需简单的写一个处理函数,例如respondTo<NotificationName>,fabrication就自动为你调用这个响应函数;
  4. 自动化的多核管道处理核和消息路由处理,fabrication简化了PureMVC中对多个模块通知的过程,在模块中发送消息只需简单的使用routeNotification方法就可以了;
  5. 支持不同类型的Undo/Redo;

编者点评:可以说,fabrication大大简化了PureMVC框架使用的过程,而且更加直观和易于理解,但是这不意味着你可以轻易的使用PureMVC,如果想使用这个框架的话还需要对PureMVC的内在机制做详细了解,在此之上,在基于Fabrication做开发将如鱼得水。

 

 

Swiz框架

Swiz 是一个为简化事件处理与异步远端方法呼叫提供方法的控制反转(IoC)框架。Swiz框架主要的焦点放在以一种简单有效的方式提供一个可靠的MVC规范。和Cairngorm以及PureMVC所不同的是,它直接回避了宏大的Java模式并且不会强调任何预定义的文件夹结构。

使用Swiz创建一个项目需要告诉Swiz框架关于你的应用的组件。在Swiz的核心,Swiz是一个集中的工厂模式。组件都会经由一个成为BeanLoader的工具类载入到这个工厂。当应用开始的时候,工厂处理这些组件的实例化。

与此同时,Swiz 通过Autowire这个自定义Metatag来提供依赖管理。Autowire标签是Swiz为你处理定义类之间依赖性的一个方法。

优点

Swiz是使用简单并且不用为你的项目强制定义结构。凭借它的Autowire 依赖注入系统,和Mate一样,既确保了组件之间的松耦合又为你管理了依赖性。同时,Swiz也和Mate一样,使用了内建的Flex事件处理机制,这一点在使用内部单件实现了全局事件分发之类的重要方面是非常有帮助的。

缺点

然后,又是和Mate一样,Swiz并不为你的应用的结构定义许多,它留给你自己去做。所以,你将会不得不为你自己的团队协调来确保你的所有开发人员以兼容的方式编码。

第二,因为它使用了自定义的metatag,所以项目需要一些附加的设置——例如,设置一些额外的编译参数。或者这些步骤不困难,但是其他框架不需要,而Swiz却需要。文档指明了Flex 2用户,所以他在flex2之后的版本将不再是一个问题。

资源

Model-Glue: Flex框架([PPT] 

Introduction to Model-Glue

 

Model-Glue:Flex由是Coldfusion框架一个后分支(另一个分支是Model- Glue:Coldfusion),Model-Glue是一种简单的MVC的FLEX框架,Model-Glue拥有COLDFUSION接口。秉承Model-Glue:Coldfusion框架一贯的特性,Model-Glue:Flex是一个轻量级的Flex框架,其设计思想与 Model-Glue:Coldfusion一致,都是基于事件驱动,类似XML的事件处理配置的一个MVC框架,熟悉Model- Glue:Coldfusion的朋友完全可以很平滑无障碍的使用Model-Glue:Flex框架。其核心的设计很简单易懂:UI组件触发事件,控制器监听事件处理事件。 《Joe Rinehart把他最初创作的Model-Glue for ColdFusion移植到了Flex。Model-Glue: Flex受到了好评。它的设计意图是成为一个比Cairngorm和PureMVC更轻量的框架,因此更便于快速原型和简单的Flex应用开发

 

Flex IOC 的第三方比如:ProfileViewer, Spring ActionScript, Parsley, Flicc, Swiz等等

  

Parsley框架

 

Parsley是基于Flex、ActionScript、Flash的IOC框架,Parsley也是Adobe团队和7月推荐的IOC方式之一,下面推荐几个不错的网址。

什么是Parsley?
Parsley是一个新型的基于Flex、ActionScript、Flash的IOC框架。

Parsley比较强大的对象配置功能:
Parsley可以支持MXML、XML、ActionScript方式的对象配置,因此可以非常灵活的动态配置这种方式(例如根据负载均衡配置动态配置remote等)

Parsley比较强大的IOC(又称为Dependency Injection,依赖注入)
支持构造函数注入、方法注入和属性注入(根据类型或 id 进行甄别,然后实现注入)

以下是关于Parsley的一些内容
官网:
http://www.spicefactory.org/
API:
http://www.spicefactory.org/parsley/docs/2.0/api/parsley-spicelib/
开发指南:
http://www.spicefactory.org/parsley/docs/2.0/manual/

以下是几个实例:
http://coenraets.org/blog/2009/07/building-a-flex-application-with-the-parsley-framework/

Spring Actionscript

 

 

 

 

Spring ActionScript 是 ActionScript 编程语言的一个 IoC 、MVC 编程框架,主要用于 Flash、Flex 和 AIR 平台的应用开发。集成了Cairngorm和PureMVC框架。

 

 

项目地址:http://www.springactionscript.org/  入门简介:http://www.riameeting.com/node/448

 

其它框架

Foundry (download)

ServeBox Foundry ( sbasfoundry )是一个ActionScript 3 / Java框架针对Flex 2应用开发者.

Guasax Flex Framework (download)

Guasax是一个易用的程序框架,为保证新老FLEX应用的扩展.

ARP (download)

ARP (Ariaware RIA Platform)是一个基于ActionScript的框架,它是一个Open Source Flash 项目.

Flest Framework (download)

Flest 是一个ActionScript3 / Flex框架.

 

 

 

 

 

 

 

 

 

 

做出你的选择

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值