Flex MVC框架
我目前正在使用和享受使用Flex MVC框架PureMVC的乐趣。我听说过有关Cairngorm的一些好消息,它得到了Adobe的支持,并具有先发力量。并且有一个名为Mate的新玩家,它的嗡嗡声很大。
有没有人尝试过其中两个或者三个框架并形成意见?
谢谢!
解决方案
回答
伴侣是我的选择。第一个也是最重要的原因是它完全不引人注目。我的应用程序代码不依赖于框架,它高度分离,可重用和可测试。
Mate最好的功能之一就是声明式配置,从本质上讲,我们可以在事件映射中使用标签连接应用程序-基本上是应用程序生成的事件的列表,以及在事件发生时应采取的措施。事件映射很好地概述了应用程序的功能。 Mate使用Flex自己的事件机制,它没有像其他大多数框架一样发明自己的事件机制。我们可以从视图层次结构中的任何位置调度事件,并将其自动气泡到框架中,而不必像Cairngorms CairngormEventDispatcher或者PureMVC的通知系统那样具有直接的行。
Mate还使用一种形式的依赖项注入(利用绑定),这使得将模型连接到视图成为可能,而其中一个都不知道另一个。这可能是框架最强大的功能。
在我看来,没有其他Flex应用程序框架能与Mate媲美。但是,这些是竞争者,为什么我认为它们的用处不大:
PureMVC主动否认了Flex的许多优点(例如,绑定和事件冒泡),以使该框架具有可移植性-我认为这是一个可疑的目标。它也是过度设计的,并且随着它们的来临而具有侵入性。应用程序的每一部分都取决于框架。但是,PureMVC并不可怕,只是与Flex不太适合。另一种选择是FlexMVCS,它旨在使PureMVC更适合Flex(不幸的是,还没有文档,只是源文件)。
Cairngorm是一堆反模式,这些反模式导致应用程序与全局变量紧密耦合。纳夫说(但如果我们有兴趣,这里还有我的一些想法,这里也是)。
Swiz是一个受Java和Cairngorm的Spring框架启发的框架(试图弥补后者最糟糕的部分)。它提供了依赖项注入容器,并使用元数据来启用依赖项的自动装配。有趣的是,但是有点怪异,通过使用依赖注入避免了Cairngorm的全局变量,然后又使用全局变量进行中央事件分派,达到了这样的长度。
这些是我尝试过或者研究过的。我听说过其他一些信息,但我认为没有一个被广泛使用。 Mate和Swiz都在最近的360 | Flex会议上进行了介绍,并且有可用的视频(Mate的人们对如何观看它们有说明)
回答
请记住,Cairngorm是Adobe支持的框架,现在托管在opensource.adobe.com上。另请注意,它是目前开发人员中最多产的。
如果我们认识Cairngorm并正在寻找工作,那我们就不会错了。
回答
Cairngorm易于使用且有据可查:
http://www.cairngormdocs.org/
我推荐Cairngorm Diagram Explorer和有关Cairngorm的经典文章。
当我学习Cairngorm时,我还是Flex的新手,但是发现以上内容对它很有用且容易学习。
回答
我们目前正在Spring ActionScript框架中致力于MVCS实现。它充分利用了Inversion of Control容器的全部功能,因此我们可以进行集中式依赖管理,并且可以轻松交换内容。它对操作方式的规定不是很明确,但是为我们提供了非常灵活的基础结构。
如果我们是Spring ActionScript和MVCS的新手,我的博客上有一篇介绍性文章:http://www.herrodius.com/blog/158
回答
我已经看过很多次这类讨论了。它们通常从我们使用的WHICH Flex框架开始。没有多少人问这个问题,为什么我们甚至需要在Flex框架之上使用任何框架。
我不赞成在Flex代码中使用任何MVC框架(Cairngorm,PureMVC)。伴侣是更好的人选。至少它很容易理解并且是非侵入性的。我更喜欢使用增强组件
点菜。我们已经创建了其中的一部分并将其开源(请参阅http://sourceforge.net/projects/cleartoolkit/上的Clear Toolkit中的clear.swc。
我们即将出版的O'Reilly的书"使用Flex进行企业开发"的第一章对几种Flex框架进行了详细的比较:http://my.safaribooksonline.com/9780596801465.
回答
MATE是要走的路。一个执行框架应做的事情的框架。
解耦架构
简单的
小脚印
效率
回答
我对这些MVC框架(Mate,Cairgnorm等)及其实现事件映射和事件控制器的方式颇有疑问,这让我想起了太多的wxWidgets和其他此类GUI工具包。
但是,如果Flex或者这些MVC框架之一使用Qt提供的Signal / Slots范例,那将是一个很好的选择。
回答
我建议使用MATE来开发大型项目和复杂项目,就像其他框架一样,Mate解决了Flex中常见的架构问题,例如事件处理,数据绑定和异步处理,但是最重要的目标是它仅基于标签,因此在我们的Flex应用程序中非常容易使用它。
回答
查看Robotlegs。
"它提供了应用程序需要轻松地以解耦方式运行的粘合剂。通过使用基于元数据的自动依赖注入,Robotlegs删除了应用程序中的样板代码。通过促进松散耦合并避免在Robotlegs框架中使用Singleton和statics可以编写高度可测试的代码。"