乐博娱乐»Flash»如何选择一个Flex框架

如何选择一个Flex框架

来源:乐博娱乐 宣布时间:2012-03-05 阅读次数:乐博

本文和各人重点讨论一下如何选择一个Flex框架,这里向各人介绍了四种Flex框架的优点和缺点,相信通过本文的简朴描述你对Flex框架的选择一定会自己的看法。

如何选择一个Flex框架

Cairngorm

Cairngorm是一个广为人知的老牌Flex框架。它是一个微型架构——由一些设计模式组成用来降低团队协作的困难。
Cairngorm从Java的世界带来了许多乐博娱乐开发理念,而且把重点放在三个要害区域:处置惩罚用户行动,封装服务端的交互和业务逻辑,治理客户端的状态和界面泛起。
使用Cairngorm来构建一个项目,需要将应用代码疏散到差异的包而且继续Cairngorm的类。以下是Cairngorm项目中一些主要的部门和类。

ModelLocator是一个储存数据的单例,数据体现程序的状态。单例类的性质保证了程序中的所有组件取得的是相同的数据。
ServiceLocator是另一个单例,它集中治理所有服务如HTTPServices。同样,由于是单例,程序中的所有组件取得的是相同的服务。
业务逻辑被封装在command类中。command实现了命令模式,它们体现相应用户事件的逻辑。
事件被类FrontController处置惩罚,FrontController会把事件映射到相应的Command。
Delegate类作为署理来对远端服务进行请求和响应。

优点

Cairngorm在Flex社区广为人知,作为Adobe开源项目的一员,拥有活跃的社区和乐博娱乐开发者的支持。
其次,该框架吸取了Java乐博娱乐开发中许多名贵的经验,并成功得用于大型项目的乐博娱乐开发中。
而且,Cairngorm适用于团队乐博娱乐开发,因为它提供了结构化的乐博娱乐开发要领来创建应用,利于漫衍式的乐博娱乐开发。

缺点

需要写大量的类应该是Cairngorm最多的负面评论了。在Cairngorm中,每一个event对应一个command;因此,需要对程序触发的每一个事件来写一个command类。而且,还要为command写一些其他的类,例如delegates。纵然是一其中型的应用也会导致大量的类发生。

其次,Cairngorm实现了自己的一套事件处置惩罚的要领。这增加了Flex内置事件模型的庞大度,而且它另有限制。由于每个事件都有自己的的command,事件的响应者被限制成1个。加之Cairngorm的事件不具冒泡特性,如果要发送数据到容器的其它条理则需要自己来实现。

第三个常见的批评是Cairngorm依赖全局的单例,这让模块和单元测试变得困难。尽管可以打破单例中的模型简化测试,但是会增加特别的历程。

Mate

Mate是一个基于标签的,事件驱动的框架。基于标签意味着它可以完全实现在MXML中。该框架的目的是让事件响应者的声明变得轻便。
在项目中使用Mate只需要处置惩罚两个方面:使用1个或者多个事件,有一个成为”eventmap“的MXML文件——被包罗在主程序中的一个MXML文件。它界说了需要监听的事件以及如何被处置惩罚。必须有1个eventmap,而且允许有多个。

Mate也实现了依赖注入(Dependencyinjection)的理念——有时被称为好莱坞原则,或“don’tcallus,we’llcallyou”。工具的创建时这样一种方式:数据被创建而且注入到工具中。也就是说,工具不会喊着要数据(”don’tcallus”),而是数据被传送给工具(”we’llcallyou”)。

优点

Mate使用依赖注入提升了松耦合性。因为组件不依赖全局的单例,能更自由地作为对立的部门。Mate不会阻止你使用Flex内建的事件机制,也不会像Cairngorm一样为每个事件都使用单独的响应。Mate的MXML标签文件简朴易用,而且文档优秀,在官网上有大量的代码实例。

缺点

Mate使用MXML文件构建,要是作为一个ActionScript乐博娱乐开发者,就需要调整自己的习惯。而且Mate没有为应用程序制定结构,这份事情留给了乐博娱乐开发者。
因此,需要增强团队协作来保证代码的兼容性。另有一个问题与AdobeLiveCycleDataServicesES有关,要知道Mate暂时还不能处置惩罚LiveCycleDataServices提供的数据治理方面的功效。

PureMVC

尽管PureMVC用在Flex上,但是它并不是只为Flex设计的。PureMVC的创建者想让它是一个语言无关的框架。如果你会见它的网站,会发现大量的差异语言的实现版本。

PureMVC以MVC模式为中心,其目标是把项目疏散成模型层,视图层和控制层。这三个层体现为三个单例——Model,View和Controller,另有第四个单例Facade用来对前三个单例进行集中治理,是Facade模式的实现。

与Cairngorm很像,使用PureMVC创建一个项目需要把项目分成多个包,然后继续框架中的类来结构自己的类。最后还要为项目特别创建一个Facade类来作为程序的入口。

优点

与Cairngorm一样,PureMVC是一个结构良好的框架,有活跃的社区和乐博娱乐开发者支持。它很适合团队乐博娱乐开发,其清晰的结构能告诉乐博娱乐开发者如何创建和组织代码。

缺点

因为它依赖于单例,所以有着和Cairngorm一样的缺点。它不是一个特定的Flex框架,所以没有充实利用到MXML的特性。

跟Cairngorm类似,PureMVC有自己的事件处置惩罚方式,但是跟尺度的Flex事件模型一起事情会增加乐博娱乐开举事度。

PureMVC是一个比力庞大的框架,有相当陡的学习曲线。除非你的团队很熟悉它,否则培训会占用许多时间。

另有,PureMVC也需要创建许多类,既增加了产品的乐博娱乐开发时间,又增大了项目的尺寸。

Swiz

Swiz是一个控制反转(IoC,InversionofControl)Flex框架,它提供一些机制来简化事件处置惩罚和异步远程调用。Swiz的真正意图是以一种简朴高效的方式提供一个MVC范式。与Cairngorm和PureMVC差异,它借鉴了Java的一些模式,摒弃了预界说的文件结构。

使用Swiz创建一个项目需要告诉Swiz所用到的组件。以这个为焦点,Swiz是一个集中治理的工厂模式。组件被名为BeanLoader的静态类加载到工厂当中,由工厂来处置惩罚组建的实例化。
Swiz还提供依赖治理,它使用了一个名为Autowire的自界说标签,Autowire标签界说依赖然后交给Swiz处置惩罚。

优点

Swiz简朴易用,没有预界说的文件结构。类似于Mate,Swiz通过Autowire这个依赖注入系统,提升了松耦合性。也类似于Mate,它使用Flex内建的事件模型,而且使用单例来发送一个要害的事件。

缺点

跟Mate一样,Swiz没有为项目的结构做过多的界说,这些留给了乐博娱乐开发者,因此,需要增强团队协作来保证代码的兼容性。
其次,它使用了自界说标签,项目的建树会特别多出一些步骤,例如设置特别的编译选项。这些历程并不庞大,但是至少这些历程在其他框架中不需要。文档强调的是Flex2的乐博娱乐开发者,所以可能不适合比Flex2更新的版本。

做出选择

虽然描述的并不详尽,但是这些信息加上资源足以让人理解提到的每个框架的要领论,优点,另有缺点。看了这些,你将如何作出取舍呢?
也许第一个问题应该问:我是否需要一个框架?Flex和MXML为快速应用乐博娱乐开发提供了健全的系统和要领。我一直以来不太使用框架的原因是,相对于使用Flex框架而言,使用特别的框架会让我为了适应这些框架而去做更多的事情。我认为,框架的作用是简化事情任务和提高生产率,而不是为了证明我能用或者用了就说明我是一个优秀的乐博娱乐开发者。

在一个电话面试中,我解释了自己为什么选择不使用框架,面试者回应:”我们是一个大的团队,所以你明白为什么我们需要一些框架了”。一番思索之后,我确实明白了它的意思。
使用框架的一个利益就是它让代码的编写尺度化了。一个程序员A和一个程序员B使用同一个框架卖力同一个项目的两个差异部门,那么可以认为他们写的程序是兼容的。也许这时候应该考虑另一个问题:有几多结构允许被强加?

这里介绍的这些框架或多会少都包罗了一些预界说的结构。与独自乐博娱乐开发相比,团队乐博娱乐开发需要更多这样的结构。这些结构可以增加项目的乐博娱乐开发时间和文件尺寸,但是也会提升团队的乐博娱乐开发情况和代码的一致性。相比这下,如果你是项目唯一的乐博娱乐开发者,就不需要把事情搞那么庞大,或许你需要一个没有这么多预界说结构的框架。
所以,选择一个正确的框架或者压根不用框架是由乐博娱乐开发情况和项目决定的。我能给出的最好的建议是了解你的项目。通过我的视察和这篇文章,我认为自己对框架的看法会更深刻,它们确实可以满足一些需求。

来源:9ria 翻译自:http://www.adobe.com/devnet/flex/articles/flex_framework.html