`
hereson
  • 浏览: 1460685 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Adobe Cairngorm,Flex框架技术实践总结

    博客分类:
  • flex
阅读更多

摘要

Cairngorm 作为Adobe 官方的Flex框架,一直被大家所认识和使用,我以自己用Cairngorm做企业级项目时积累的经验,对Cairngorm 做一个比较深入的探讨.

正文

Cairngorm作为一个轻量级别的Framework,的确在小型项目中对开发有一定程度帮助,但是随着重量级别的Flex开发的,尤其是Message Push,Module,RSL,DataService,等比较重量级别的特性的使用,Cairngorm并没有很好得处理和封装这些特性,Cairngorm只不过为我们提高了一个样板,一个线索,实际上的工作还需要我们来完成.

其次,Cairngorm的整体设计上存在一定的陷阱,如果没有办法很好得理解Cairngorm的设计思想,很有可能会造成性能问题和额外维护成本.

下面分几点来讨论:

(1)IServiceLocator模式

IServiceLocator的主要功能是使远程服务器对象保持单例,但没有提供添加删除功能.没有考虑到Module加载这一特性,所以的远程服务都必须注册在Application上,丧失了动态服务加载的特性.

(2)CreditCardDelegate

这是一个莫名其妙的类,我无法理解他的存在能带来什么,从表面看上去可能和后端的RemoteObject的类型保持一直, 把service从弱类型转换为强类型,但是CreditCardDelegate本身通过构造函数Command的子类来实例化,从敏捷角度来说这些操作太多余.

(3)Command模式的滥用

Command模式 最推荐在远程服务的业务逻辑的情况下才使用,一般的UI事件使用UI原来的事件机制可能会更加良好的兼容性.

Cairngorm对事件链和事件流的支持不是很好,只有一个SequenceCommand

使用的时候还需要自己去调用

Called explicitly by the developer within a concrete SequenceCommand implementation

public function executeNextCommand() : void;

(4)虚伪的FrontController

FrontController根本没有做任何事实上可控制有关系的事情,充其量可以作为一个任务分派器或者任务配置表.将CairngormEvent和Command做映射.

有兴趣可以对比看一下flex sdk中Controller类的职责很角色.

(5)CairngormEvent

有些开发者喜欢只使用CairngormEvent,来传递数据,由于CairngormEvent只有一个data:* 造成不同数据结构的事件都叫CairngormEvent, 这样的做法会降低项目的可维护性, 参考CairngormStoreWeb2_1,就为每一种类型的事件建立了新的子类,和数据结构和构造器. 我十分推荐这种做法

 

(6)IModelLocator

IModelLocator这个特性是一个很危险的特性,由于IModelLocator是单例全局访问权限, 如果将View和临时数据放在里面,很容易造成内存泄漏等问题.IModelLocator存放大量无关数据也会造成无法被垃圾回收.

IModelLocator还不利于自定义FLex组件的独立性,如果在自定义组件里使用IModelLocator的数据,就会造成自定义组件依赖Cairngorm.

我建议尽量避免使用IModelLocator,IModelLocator中只放业务相关的数据,不放任何图形对象的实例.

(7)ViewHelper 和 ViewLocator

刚才提到了IModelLocator中定义View会造成问题.CairngormEvent又提供了ViewHelper 这样一个机制来提供全局范围访问view.

虽然提供了2个监听来防止内存泄漏

view.addEventListener( Event.ADDED, registerView );
view.addEventListener( Event.REMOVED, unregisterView );

但是我还是不推荐使用.因为这会增加代码复杂度和耦合.

(8)其他

还有一些比如多国语言和样式等,基本没有什么太大的问题,这里就不提了.

总结

IServiceLocator 和FrontController的功能有限.

Command和CairngormEvent 往往是开发者理解不足造成的问题

IModelLocator 和ViewHelper 会让程序像汇编里的GOTO那样东跳西跳.

总得来说,Cairngorm的技术和设计思路并没有太大的问题,但是由于种种问题,导致Cairngorm还无法胜任大型项目的开发,因此我借鉴了Cairngorm,ModuleGlue和其他一些框架,自己开发了新的Framework,-------- Loof-framework.

参考资料

Adobe Cairngorm:http://labs.adobe.com/wiki/index.php/Cairngorm

分享到:
评论
2 楼 steven186 2008-10-16  
厉害啊,能不能介绍些Cairngorm的目的、试用场合、试用方法的资料,感谢。
1 楼 CherryRemind 2008-06-18  
楼主自己开发framework  Loof-framework.? 

相关推荐

    cairngorm 框架介绍(详细介绍了Adobe Cairngorm框架)

    Adobe Cairngorm是一款开源的Model-View-Controller(MVC)框架,专门针对Adobe Flex和ActionScript 3.0开发。这个框架为构建可维护和可扩展的富互联网应用程序(RIA)提供了强大的支持。本文将深入探讨Cairngorm的...

    flex框架之Cairngorm框架(二)

    Flex框架是Adobe开发的一种用于构建富互联网应用(RIA)的技术,它基于ActionScript和MXML。Cairngorm是Flex框架中的一个轻量级MVC(Model-View-Controller)设计模式实现,由Adobe社区成员Stephan J. Schmidt在2005...

    Flex框架Cairngorm经典案例源码

    Flex框架是Adobe公司推出的一种基于ActionScript和Flash Player运行时的开发框架,主要用于构建富互联网应用程序(Rich Internet Applications,简称RIA)。Cairngorm是Flex社区中流行的一种轻量级MVC(Model-View-...

    Flex Cairngorm框架生成器

    Flex Cairngorm框架生成器是一款专门针对Adobe Flex开发的工具,旨在简化Cairngorm框架的应用构建过程。Cairngorm是ActionScript和Flex社区中广泛使用的轻量级MVC(Model-View-Controller)框架,它帮助开发者组织和...

    Flex开发框架cairngorm入门实例教程

    Cairngorm是一个轻量级的MVC框架,专门用于Adobe Flex应用程序的开发。这个框架的设计目的是为了提高Flex项目的可维护性和可扩展性,通过分离业务逻辑、视图和控制层,使得代码更加模块化。在Cairngorm中,模型...

    flex Cairngorm框架实例

    这个框架是Adobe Flex开发者社区中的一个流行选择,它旨在提高代码组织、可维护性和可扩展性。让我们深入探讨Cairngorm框架的核心组件及其在实际开发中的应用。 1. **模型(Model)**:模型层是应用程序的数据存储...

    Cairngorm-Flex.zip_Cairngorm_flex

    文件“Cairngorm框架在Flex开发中的应用研究.nh”很可能是关于Cairngorm在实际项目中的案例分析或技术指南,详细讨论了如何在Flex开发中有效地利用Cairngorm框架,包括最佳实践、常见问题以及解决方案。通过阅读这份...

    flex框架 Cairngorm+spring集成

    ### Flex框架 Cairngorm+Spring集成详解 #### Flex框架概览 Flex是一种用于构建和部署丰富互联网应用程序(RIA)的强大工具包,它结合了强大的编程语言(如ActionScript)、丰富的图形渲染引擎以及高效的编译器,使...

    flex cairngorm框架实例 真正可运行直接导入

    Flex Cairngorm框架是Adobe Flex开发中的一个轻量级MVC(Model-View-Controller)框架,它旨在帮助开发者组织和管理复杂的Flex应用程序。Cairngorm由Adobe贡献给开源社区,是ActionScript 3.0的一个流行架构选择,...

    flex-Cairngorm框架

    Flex Cairngorm框架是Adobe Flex应用程序开发中的一个流行的设计模式,它基于Model-View-Controller(MVC)架构,旨在提高代码的可维护性和可扩展性。Cairngorm框架由SitePen公司开发,最初是为了满足大型企业级Flex...

    Art01-No.1 基于Cairngorm MVC框架的Flex程序设计与开发

    总结来说,Cairngorm MVC框架为Flex开发者提供了一套结构化和模块化的开发工具,通过事件驱动和命令模式实现了视图、模型和控制器之间的解耦。"CairngormMVCDemo"项目是学习和实践这一框架的宝贵资源,可以帮助...

    flex 的cairngorm框架实例

    Flex Cairngorm框架实例详解 Flex,作为Adobe的开源富互联网应用(RIA)开发平台,以其强大的MXML和ActionScript支持,为开发者提供了构建交互性强、用户体验优良的应用程序的工具。而Cairngorm框架,则是针对Flex...

    Cairngorm框架在Flex开发中的应用论文

    Cairngorm框架是Adobe官方推荐的用于Flex应用程序开发的MVC(Model-View-Controller)框架,旨在解决大型复杂项目中的开发效率和可维护性问题。Flex虽然提供了丰富的功能和熟悉的开发流程,但在处理复杂应用程序时,...

    Cairngorm框架配置

    Cairngorm是一种专门为Adobe Flex设计的模型-视图-控制器(Model-View-Controller, MVC)架构模式框架。它通过清晰地分离应用逻辑,使得开发更加模块化、可维护性强,并且能够很好地与后端服务进行交互。 ##### 1.1 ...

    FLEX资源——《Cairngorm中文版》官方的FLEX框架

    《Cairngorm中文版》官方的FLEX框架是一份重要的资源,对于深入理解Adobe Flex应用开发中的架构设计有着极大的帮助。Flex是一个基于MXML和ActionScript的开源框架,用于构建富互联网应用程序(RIA)。而Cairngorm是...

    Flex3/4 Cairngorm框架 入门 源码 主要是登陆注册功能。

    Flex是Adobe公司开发的一种基于ActionScript的开源框架,主要用于构建富互联网应用程序(RIA)。Cairngorm是Flex中一个非常著名的轻量级MVC(Model-View-Controller)设计模式框架,它为开发者提供了一种组织和管理...

    Flex的Cairngorm框架工程 Java后台

    Flex的Cairngorm框架是Adobe Flex开发中的一个轻量级MVC(Model-View-Controller)框架,它为创建可扩展、可维护的富互联网应用程序(RIA)提供了结构和指导。Cairngorm框架主要由Martin Fowler在2005年提出,灵感...

    flex cairngorm 框架

    Flex Cairngorm框架是Adobe Flex开发中的一个轻量级、基于MVC(Model-View-Controller)设计模式的架构框架,旨在帮助开发者更好地组织和管理复杂的Flex应用。这个框架最初由Adobe公司内部开发,后来成为了开源项目...

Global site tag (gtag.js) - Google Analytics