为什么要选择Cairngorm开发框架?(转)

我是一个JAVA EE开发人员,从业已经有近七、八年的时间了。对JavaEE的企业用户开发技术框架方面的比较熟悉。对Spring,Struts,Webwork,Hibernate等流行的开源框架也一直在工作中使用。

在现在的MVC框架中,我比较倾向于采用WebWork,灵活轻巧Struts2其实质就是对WebWork2的一次升级,这也说明了WebWork相对与Struts1的优势所在。在现在的RIA开发成为趋势之后,在工作中也使用了DWR做Ajax服务器端的数据处理,并采用js template的脚本处理页面显示数据,其中最大的痛苦就是调试JavaScript,尽管我们使用了firefox的插件调试javascrpt。

正如“JAVA程序员当如何选择RIA开发环境”所提到ajax的的先天缺陷,并不适合RIA的全应用开发,如果只是在页面中的局部使用是有一些优势,根据具体情况选择最合适的。

在Flex的应用程序开发当中,学习了很对范例,基本上浏览了一遍Flex的帮助文档,并自己做了些小程序。

其中遇到最大的困难不是在程序调试方面,而且程序管理方面的,代码混乱,难以控制,尤其在多人开发的时候,更加容易出现这样的情况。这样的情况下RIA的开发是痛苦的,不适宜的。

Cairngorm开发框架说白了就是一个FLEX应用开发的MVC框架(自己的感觉)。将Model,view,Control独立分开,清晰明了。

什么是Cairngorm?Cairngorm是一个通过逻辑功能、数据、用户视图和代码控制的任何事情来划分你的应用程序代码的基础方法论,可以叫做MVC(Model-View-Control)的一种实践方式。

Cairngorm的划分
Model Locator(模型定位器):存储你的应用中所有的Value Objects(数据)和共享变量在一个位置。和Http的Session对象类似,只是它存储在Flex接口的客户端而不是在中间件应用服务器的服务器端。

View(界面):通过一个或者多个Flex组件(按钮、面板、组合框、Tile等等)组合在一起的一个个命名单元,绑定数据在Model Locator(模型定位器)中,并且产生基于用户操作(点击、滚动、拖拽等)的自定义的Cairngorm事件。

Front Controller(前端控制器):接收Cairngorm事件并映射他们到Cairngorm命令控制器上。

Command(命令控制器):处理商业逻辑,调用Caringorm代理和(或)其它命令。

Delegate(代理):由命令创建,实例化远程过程调用(HTTP、Web Service等等)并且处理命令的返回结果数据。

Service(服务):定义连接远程数据存储的远程过程调用(HTTP、Web Service等等)。


有关Cairngorm的资料:/P>


Cairngorm 是Iteration::two的开源项目, 是使用macromedia Flex的RIA开发的最佳
实践(best-practice)框架.
在Cairngorm基础上开发RIA, 将会在Iteration::two的专家体系和现有的灵活可维
护企业解决方案中达到平衡.
Cairngorm本身并不是一个完整的企业应用, 它只是提供了一个开发的骨架, Iteration::two称
之为体系.
在这个体系中包括以下几个部分:
1. Business(业务逻辑部分)
2. Command(命令部分)
3. Control(控制部分)
4. Model(数据模型)
5. View(界面视图)
6. VO(ValueObject)

我们从Control说起:
在Control中, 定义了3个基类: Event, EventBroadcaster, FrontController.
Event用于在应用不同的层之间传递事件, 并携带事件的数据. 包含type和data两个
成员.
type存放一个区别不同事件的名称,将会在FrontController中进行注册.
而在命令(Command)类中, 会对事件进行响应.

EventBroadcaster是一个单例类(singleton), 用于广播用户动作对应的事件. 使用
方法: EventBroadcaster.getInstance().broadcastEvent( ... )

FrontController稍微复杂一点点. 用于将特定的用户动作分发到指定的命令类. 
FrontConroller是请求处理的核心类. 整个体系中遍布的EventBroadcaster.getInstance(
).broadcastEvent( ... )这样的调用,
都是用来通知监听控制器: 用户发出了请求. 在实际应用中, 开发者应该生成一个
FrontContoller的子类,
并在构造函数中调用addCommand()注册预期事件的处理命令. FrontController的具
体实现类应该创建一次而且只能创建一次.

 

http://cairngormdocs.org/

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

 

原文链接:http://www.blogjava.net/19851985lili/articles/98310.html

posted @ 2010-06-04 21:26  子福当自强  阅读(...)  评论(... 编辑 收藏
悟道2012