<li id="2aw4k"></li>
  • <div id="2aw4k"><tr id="2aw4k"></tr></div>
  • <div id="2aw4k"><tr id="2aw4k"></tr></div>
    <center id="2aw4k"><small id="2aw4k"></small></center><center id="2aw4k"><small id="2aw4k"></small></center>
    首页»Flash»如何选择一个Flex框架

    如何选择一个Flex框架

    来源:Web开发者 发布时间:2012-03-05 阅读次数:

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

    如何选择一个Flex框架

    Cairngorm

    Cairngorm是一个广为人知的老牌Flex框架。它是一个微型架构——由一些设计模式组成用来降低团队协作的困?#36873;?br /> Cairngorm从Java的世界带来了很多开发理念,并且把重点放在三个关键区域:处理用户动作,封装服务端的交互和业务逻辑,管理客户端的状态和界面呈现。
    使用Cairngorm来构建一个项目,需要将应用代码分离到不同的包并且继承Cairngorm的类。以下是Cairngorm项目中一些主要的部分和类。

    ModelLocator是一个储存数据的单例,数据表示程序的状态。单例类的性?#26102;?#35777;了程序中的所有组件取得的是相同的数据。
    ServiceLocator是另一个单例,它集中管理所有服务如HTTPServices。同样,由于是单例,程序中的所有组件取得的是相同的服务。
    业务逻辑被封装在command类中。command实现了命令模式,它们表示相应用户?#24405;?#30340;逻辑。
    ?#24405;?#34987;类FrontController处理,FrontController会把?#24405;成?#21040;相应的Command。
    Delegate类作为代理来对远端服务进行请求和响应。

    优点

    Cairngorm在Flex社区广为人知,作为Adobe开源项目的一?#20445;?#25317;有活跃的社区和开发者的支持。
    其次,该框架吸取了Java开发中许多宝贵的经验,并成功得用于大型项目的开发中。
    并且,Cairngorm适用于团队开发,因为它提供了结构化的开发方法?#21019;?#24314;应用,利于分布式的开发。

    缺点

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

    其次,Cairngorm实现了自己的一?#36164;录?#22788;理的方法。这增加了Flex内置?#24405;?#27169;型的复杂度,而且它还有限制。由于每个?#24405;?#37117;有自己的的command,?#24405;?#30340;响应者被限制成1个。加之Cairngorm的?#24405;?#19981;具冒泡特性,如果要发送数据到容器的其它层次则需要自己来实现。

    第三个常见的批评是Cairngorm?#35272;等?#23616;的单例,这让模块和单元测?#21592;?#24471;困?#36873;?#23613;管可以打破单例中的模型简化测试,但是会增加额外的过程。

    Mate

    Mate是一个基于标签?#27169;录?#39537;动的框架。基于标签意味着它可以完全实现在MXML中。该框架的目的是让?#24405;?#21709;应者的声明变得简便。
    在项目中使用Mate只需要处理两个方面:使用1个或者多个?#24405;?#26377;一个成为”eventmap“的MXML文件——被包含在主程序中的一个MXML文件。它定义了需要监听的?#24405;?#20197;及如何被处理。必须有1个eventmap,而?#20197;?#35768;有多个。

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

    优点

    Mate使用?#35272;?#27880;入提升了松耦合性。因为组件不?#35272;等?#23616;的单例,能更自由地作为对立的部分。Mate不会阻止你使用Flex内建的?#24405;?#26426;制,也不会像Cairngorm一样为每个?#24405;?#37117;使用单独的响应。Mate的MXML标签文件简单?#23376;茫?#32780;且文档优秀,在官网上?#20889;?#37327;的代码实例。

    缺点

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

    PureMVC

    尽管PureMVC用在Flex上,但是它并不是只为Flex设计的。PureMVC的创建者想让它是一个语言无关的框架。如果你访问它的网站,会发现大量的不同语言的实?#32844;?#26412;。

    PureMVC以MVC模式为中?#27169;?#20854;目标?#21069;?#39033;目分离成模型层,视图层和控制层。这三个层表现为三个单例——Model,View和Controller,还有第四个单例Facade用来对前三个单例进行集中管理,是Facade模式的实现。

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

    优点

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

    缺点

    因为它?#35272;?#20110;单例,所以有着和Cairngorm一样的缺点。它不是一个特定的Flex框架,所以没有充分利用到MXML的特性。

    跟Cairngorm类似,PureMVC有自己的?#24405;?#22788;理方式,但是跟标准的Flex?#24405;?#27169;型一起工作会增加开发难度。

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

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

    Swiz

    Swiz是一个控制反转(IoC,InversionofControl)Flex框架,它提供一些机?#35780;?#31616;化?#24405;?#22788;理和异步远程调用。Swiz的真正意图是以一种简单高效的方式提供一个MVC范式。与Cairngorm和PureMVC不同,它借鉴了Java的一些模式,摒弃了预定义的文件结构。

    使用Swiz创建一个项目需要告诉Swiz所用到的组件。以这个为核?#27169;琒wiz是一个集中管理的工厂模式。组件被名为BeanLoader的静态类加载到工厂当中,由工厂?#21019;?#29702;组建的实例化。
    Swiz还提供?#35272;?#31649;理,它使用了一个名为Autowire的自定义标签,Autowire标签定义?#35272;等?#21518;交给Swiz处理。

    优点

    Swiz简单?#23376;茫?#27809;?#24615;?#23450;义的文件结构。类似于Mate,Swiz通过Autowire这个?#35272;?#27880;入?#20302;常?#25552;升了松耦合性。也类似于Mate,它使用Flex内建的?#24405;?#27169;型,并且使用单例来发送一个关键的?#24405;?/p>

    缺点

    跟Mate一样,Swiz没有为项目的结构做过多的定义,这些留给了开发者,因此,需要加强团队协作来保证代码的兼容性。
    其次,它使用了自定义标签,项目的建立会额外多出一些步骤,例如设置额外的编译选项。这些过程并不复杂,但是至少这些过程在其他框架中不需要。文?#30331;?#35843;的是Flex2的开发者,所以可能不适合比Flex2更新的版本。

    做出选择

    虽然描述的并不详尽,但是这些信息?#30001;?#36164;源足以让人理解提到的每个框架的方法论,优点,还有缺点。看了这些,你将如何作出取舍呢?
    也许第一个问题应该问?#20309;?#26159;否需要一个框架?Flex和MXML为快速应用开发提供了健全的?#20302;?#21644;方法。我一直以来不太使用框架的原因是,相对于使用Flex框架而言,使用额外的框架会让我为了适应这些框架而去做更多的事情。我认为,框架的作用是简化工作任务和提高生产率,而不是为了证明我能用或者用了就?#24471;?#25105;是一个优秀的开发者。

    在一个电话面试中,我解释了自?#20309;?#20160;么选择不使用框架,面试者回应:”我们是一个大的团队,所以你明白为什?#27425;?#20204;需要一些框架了”。一番思索之后,我确?#24471;?#30333;了它的意思。
    使用框架的一个好处就是它让代码的编写标准化了。一个程序员A和一个程序员B使用同一个框架负责同一个项目的两个不同部分,那么可以认为他们写的程序是兼容的。也许这时候应该考虑另一个问题:有多少结构允许被强加?

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

    来源:9ria 翻译自: QQ群:WEB开发者官方群(515171538),验证消息:10000
    微信群:?#26377;?#32534;微信 849023636 邀请您加入,验证消息:10000

    提示:更多精彩内容关注微信公众号:全栈开发者中?#27169;╢sder-com)
    网友评论(共1条评论) 正在载入评论......
    理智评论文明上网,拒绝恶意谩骂 发表评论 / 共1条评论
    登录会员中心
    大乐透彩票预测
    <li id="2aw4k"></li>
  • <div id="2aw4k"><tr id="2aw4k"></tr></div>
  • <div id="2aw4k"><tr id="2aw4k"></tr></div>
    <center id="2aw4k"><small id="2aw4k"></small></center><center id="2aw4k"><small id="2aw4k"></small></center>
    <li id="2aw4k"></li>
  • <div id="2aw4k"><tr id="2aw4k"></tr></div>
  • <div id="2aw4k"><tr id="2aw4k"></tr></div>
    <center id="2aw4k"><small id="2aw4k"></small></center><center id="2aw4k"><small id="2aw4k"></small></center>
    克里斯汀月饼 广东36选7开奖11057 爱彩乐app下载ios 在哪可以买新疆时时彩 3d组选号码013前 360时时彩倍投器 11选5山东 彩票p62开奖查询 好彩1开奖结果走势图 体彩超级大乐透规则及奖金 南非国际娱乐平台 生肖时时彩 彩票体彩陕西11选5开奖结果走势图表 高级一码中特一肖中特 欢乐生肖开奖直播