介绍Cairngorm

news/2024/5/19 19:39:06 标签: Flex, 框架, 设计模式, Adobe, Flash
[url=http://labs.adobe.com/wiki/index.php/Cairngorm]Cairngorm[/url]是Adobe Labs上的Flex MVC框架
Cairngorm文档很少,其Wiki上有核心开发人员[url=http://weblogs.macromedia.com/swebster/]Steven Webster[/url]写了6篇文章来介绍Cairngorm:
[url=http://www.adobe.com/devnet/flex/articles/cairngorm_pt1.html]Part I - Introducing Cairngorm[/url]
[url=http://www.adobe.com/devnet/flex/articles/cairngorm_pt2.html]Part II - Keeping State on the Client[/url]
[url=http://www.adobe.com/devnet/flex/articles/cairngorm_pt3.html]Part III - Architecting the View[/url]
[url=http://www.adobe.com/devnet/flex/articles/cairngorm_pt4.html]Part IV - Feature-driven Development[/url]
[url=http://www.adobe.com/devnet/flex/articles/cairngorm_pt5.html]Part V - Server-side Integration[/url]
[url=http://www.adobe.com/devnet/flex/articles/cairngorm_pt6.html]Part VI - Rapid and Consistent Development with Cairngorm and Flex[/url]

Steven WEbster是Adobe RIA的practice director。

第一部分、介绍Cairngorm:

[color=blue][b]介绍[/b][/color]
这6篇文章的系列展示了一个叫Cairngorm的面向Flex开发人员的开源框架。在这个系列里我解释了Cairngorm幕后的主要思想和
Adobe给出的设计挑战。Cairngorm是一个合适的开发架构。

这个系列使用Cairngorm Store示例程序来解释当基于Cairngorm开发时Adobe Consulting关于scoping、estimating和delivering
富Internet应用(RIA)的思考。我也解释了Cairngorm的多种概念并深入Cairngorm Store的实现。

最后,我通过以Cairngorm开发人员的角度添加一个新特性到Cairngorm Store程序来示范基于Cairngorm微架构发布RIA的主要
好处。通过这一步,你可以自己看到Cairngorm的好处。

Cairngorm当然不是构建Rich Internet Application的唯一方式。但是,Adobe Consulting在已有的Flex程序开发经验的基础上曾
使用本系列文章里的信息来帮助大量客户和合伙人成功发布大规模Flex RIA。

这个系列从理解Cairngorm的动机和概念到基于Cairngorm架构你自己的程序完整的介绍了Cairngorm。

第一部分提供了理解Cairngorm架构的上下文和背景,而不是从一开始就一头扎进代码里。我讨论了框架,并澄清了程序框架和架构
框架之间的区别。然后我介绍了设计模式和微架构概念。最后,我给出Cairngorm出现的背景:它的历史和roadmap。

在第二至六部分,你将在客户端和一个J2EE服务器端使用Flex和Cairngorm开发一个零售商业程序。

[color=blue][b]澄清框架的定义[/b][/color]
在软件开发里,框架这个术语是承受最多和最滥用的术语。当开发人员写了大量代码并认为足够重要来在其他项目中使用,他们趋向
于给代码赋予这个术语。这样就有了许多类型的框架:持久框架、事务框架、日志框架、面向方面框架、动画框架、单元测试框架等等

在深入讨论Cairngorm框架之前,解释Adobe Consulting团队与客户和合伙人分享的关于框架认识的区别很重要 -- 特别是程序框架
和架构框架间的区别。

[b]程序框架[/b]
Flex是程序框架的一个典型的例子。即将发布的Flex 2.0事实上在架构上区别于程序框架 -- 通常在Adobe里称为"app model"。Flex
框架2.0提供丰富的类库来提供高粒度功能性供开发人员创建自定义的代码。例如,Flex 2.0集合API提供开发人员用来创建受管的数
据集合的底层功能性。开发人员组合这些集合为他们的特殊程序的高级对象。而且,程序框架Flex也暴露了程序级的服务,如
history管理、layout管理、cursor管理、exception handling、i18n、logging等等。

框架提供高粒度类库来给开发人员提供高级别灵活性,或者当框架提供对多开发人员的项目有用的程序级服务时,我们仍可以称其
为"程序框架"。

另一个程序框架的例子是Adobe Consulting使用的非常成功的[url=http://www.adobe.com/devnet/flex/articles/fast_userguide.html]FAST框架[/url]。FAST框架提供了程序服务如logging、tracing和继承了
Flex1.x框架自己的RPC data services的value-add类库,这在John Bennett的文章里也有所解释:
[url=http://www.adobe.com/devnet/flex/articles/fast_userguide.html]Faster Development with the Flex Application Starter Toolkit(FAST)[/url]

[b]架构框架[/b]
架构框架是完全不同的野兽。架构框架除了提供给程序可以悬挂的基础组织 -- 提供骨架和内部结构来负载肌肉外不提供任何额外的
服务给开发人员

换句话说,架构框架提供你的程序的技术架构通常的入口点。

[color=blue][b]使用设计模式[/b][/color]
不关注软件工程里重大的改进 -- 设计模式的话,很难谈论技术架构。

"there is nothing new under the sun"这句话在软件工程原则里是再正确不过了。开发人员发现他们在程序开发中经常遇到不变的
工程问题。而他们的解决方案也和所遇到的问题一样重复不变。不管这些重复出现在哪里,你可以将这些解决方案视为"模式"。

[b]设计模式的诱惑[/b]
现在有一个警告:当软件工程师第一次遇到设计模式时,对工程问题解决方案的分类的意识可能非常强大。通常开发人员发现问题的
子集并希望寻找其他可以利用的设计模式。尽管如此,"when all you have is a hammer, everything looks like a nail"这句
老谚语在这里是适用的。你经常会在程序里发现"模式过度",开发人员抛弃了类以及协作的责任,而是把任何东西都扔到Factory、
Flyweight、Observer或Decorator里。

但是,合理的使用设计模式会成为开发人员的工具箱里一个强大的工具。设计模式不仅仅提供问题常见的解决方案,而且开发人员在
程序中使用设计模式的方式也指示了实现的目的。例如,不管何时你在代码中使用Singleton时,你理解这是一个应该只有一个实例
的类。类似的,无论何时你遇到一个Factory时,你会意识到工厂类可以产生一些不同的对象。

[b]微架构作为设计模式的组合[/b]
...

[color=blue][b]Cairngorm的历史[/b][/color]
iteration::two是我和Alistair McLeod创立的软件咨询公司,我们意识到要面对的许多在J2EE程序开发里成功解决的设计挑战在RIA
世界里仍然存在。我们回到FlashFlash Remoting和J2EE的RIA开发历史。

浏览Sun Microsystems提倡的设计模式[url=http://java.sun.com/blueprints/corej2eepatterns/Patterns/index.html]Core J2EE Pattern Catalog[/url],我们首先在Reality J2EE: Architecting for
Macromedia Flash MX(Pearson Education, 2003)这本书里展示了Flash中这些模式的应用。随着Flash MX 2004的发布,我们在
Macromedia Flash MX 2004 ActionScript2.0 Dictionary(Macromedia Press, 2003)一书的"ActionScript 2.0 Design Patterns
for RIA Development"一章中也展示了这些模式。

由于RIA技术平台从Flash作为设计中心到Flex编程越来越成熟,使用这些模式的动机也出现了。但是,Flex编程模型给我们更优雅的
方式来实现这些模式。而且,一些我们认为对Flash RIA开发人员非常有用的模式(例如|ViewHelper模式)在Flex RIA世界变得不再
有用,我们也创建了一些自己的新的Flex特有的模式,例如ModelLocator模式。

在[url=http://www.adobe.com/devnet/max2004/]MAX 2004[/url]中我们宣布了我们发布基于Flex的开源Cairngorm框架的决定,这在社区中得到广泛影响。

[b]Cairngorm教会你什么[/b]
Cairngorm是一个宣布了3个重要领域的微架构:
1, 在客户端处理用户动作
2, 封装业务逻辑和服务端交互
3, 在客户端管理状态并展示该状态到用户界面

Cairngorm提供一个微架构(一些设计模式的集合),目标是解决上述重复出现的3个设计挑战。

当你阅读本系列文章时,你将学习如下内容:
1, Front Controller和Command模式怎样实现"Service to Worker"微架构来监听和响应用户请求
2, Business Delegate和Service Locator模式怎样工作来让你重用业务逻辑并封装它来在客户端和服务端开发团队之间建立
一个清晰的契约并且与服务端实现无关,如Web Services,EJB,ColdFusion组件甚至HTTP上使用XML的RESTful 架构。
3, J2EE里的Value Object模式怎样与ModelLocator模式协作来作为一个优雅的策略使用丰富用户体验维护有状态客户端

[b]Cairngorm的当前状态[/b]

[b]Where to Go from Here[/b]

http://www.niftyadmin.cn/n/728144.html

相关文章

cacheAddMethod方法

display方法会带来效率上的损失,因为每当界面刷新时都会调用display方法,在Inside Dynamics AX在性能(一)这一节介绍了用cacheAddMethod提升性能的做法.FormDataSource的cacheAddMethod可以将display的返回值打包发送到客户端,只有在调用FormDataSource的reread,create和write方…

在客户端保存状态

[urlhttp://www.adobe.com/devnet/flex/articles/cairngorm_pt2.html]Keeping State on the Client[/url]在第一部分里,我介绍了Cairngorm,一个简化大规模RIA开发中重复出现的复杂性的轻量级技术架构。在这篇文章里,我描述了在开发企业RIA时面…

js怎么获取扫码枪条码_扫码枪不用密码就能把钱扫走?怎么才能取消?

阅读本文前,请您先点击上面的蓝色字体,再点击“关注”,这样您就可以免费收到最新内容了。每天都有分享,完全是免费订阅,请放心关注! …

项目进度计划表的制作及甘特图的绘制

工程项目进度管理的目的就是为了实现最优工期,多快好省地完成任务。而项目进度表,就是用图形化来展示项目的进展过程,用来管控各个节点是否能如期完成,是一个比较形象化的工具。 你会做项目进度表么?如果你会excel的话…

计算机电源没有工作怎么解决,台式机电源供电不足怎么办 台式机电源供电不足解决方法...

台式机电源供电不足故障现象和解决方法:电脑电源功率不足故障现象:1、光驱本身完好,由于主板或数据线故障,某些配件接触不良,导致不能读盘解决办法:采用替换法排除 cpu、电源和其他配件的问题后,再用替换法…

过滤html标签

1.CommunityServer.config MarkUp标签设置需要过滤或者保存的标签2.HtmlScrubber处理过滤标签的类3.module.一般都是使用一个过滤的module.在该module中调用HtmlScrubber.这是一个很好的想法. 转载于:https://www.cnblogs.com/Elong/archive/2007/05/24/758346.html

pb 删除右边第一个字符_判断估值的第二个指标-PB

本文于11月5日始发于公众号:Gabriel没有特殊字符,weibo:后厂村名基上次和大家介绍了估值的第一个指标PE:初识估值-PE是什么,今天继续和大家介绍估值的第二个指标-PBPB,即为市净率,算法为股票市值…

项目管理中的进度控制与目标计划

项目进度控制是项目经理的一项重要职责。项目进度管理是在项目实施过程中,对各阶段的进展程度和项目最终完成的期限所进行的管理,目的是保证项目能在满足其时间约束条件的前提下实现其总体目标,在规定的时间内,拟定出合理且经济的…