??xml version="1.0" encoding="utf-8" standalone="yes"?>精品国产一区二区三区不卡
,99re热这里只有精品视频,青青草免费在线视频 http://www.aygfsteel.com/xiejiangboblogjava/category/44026.html我要一步一步往上爬,在最高点乘着叶片往前飞,让风吹干过的泪和汗,L一天我有属于我的天! zh-cn Thu, 25 Feb 2010 19:15:07 GMT Thu, 25 Feb 2010 19:15:07 GMT 60 about cairngorm http://www.aygfsteel.com/xiejiangboblogjava/articles/313956.htmlI'm God ! I'm God ! Thu, 25 Feb 2010 15:10:00 GMT http://www.aygfsteel.com/xiejiangboblogjava/articles/313956.html http://www.aygfsteel.com/xiejiangboblogjava/comments/313956.html http://www.aygfsteel.com/xiejiangboblogjava/articles/313956.html#Feedback 0 http://www.aygfsteel.com/xiejiangboblogjava/comments/commentRss/313956.html http://www.aygfsteel.com/xiejiangboblogjava/services/trackbacks/313956.html
Cairngorm的组成:
1. Model LocatorQ保存应用的ValueObjectQ数据)和共享变量,与HttpSessioncMQ只不过是保存在客户端而不是在服务器端而已
2. ViewQ一个或者多个FlexlgQ按钮、Panel、下拉框{等Q组合在成一个被命名的单元。绑定Model Locator中的数据Q根据用户动作(点击、滚动、拖放)产生自定义的Cairngorm事g?br />
3. Front ControllerQ接收Cairngorm事gQƈ映射到对应的Cairngorm命o?br />
4. CommandQ处理业务逻辑Q调用Cairngorm的代理或者其他命令,更新Model Locator中的Value Object和变量倹{?br />
5. DelegateQ在命o中创建,初始化一个远E调用(Http, WebService{等Q,q将q回l果传递给Command?br />
6. ServiceQ定义远E调用连接远E的数据存储?br />
Cairngorm的工作方式:
1. 客户端界面由各个Viewl成QView通过l定Model Locator的成员来昄数据。ViewҎ用户操作生成事g。这些事件由Front Controllerq播q接Ӟ然后映射到相应的命o。命令包含业务逻辑、创Z理来完成操作Q处理代理返回的l果Qƈ更新Model Locator的数据。因为View是与Model Locator中的数据l定的,因此Model Locator中数据更新后QView自动反应出数据的变化。由代理调用服务q返回处理结果不是必ȝQ但是这是推荐做法?a target="_blank">
官方说明Q?br />
Cairngorm 是Adobe Labs上的Flex MVC框架
Cairngorm 文档很少Q其Wiki上有核心开发h?a target="_blank">Steven Webster写了6文章来介绍Cairngorm :
Part I - Introducing Cairngorm
Part II - Keeping State on the Client
Part III - Architecting the View
Part IV - Feature-driven Development
Part V - Server-side Integration
Part VI - Rapid and Consistent Development with Cairngorm and Flex
Steven WEbster是Adobe RIA的practice director?
W一部分、介l?span class="hilite1">Cairngorm:
介绍
q?文章的pd展示了一个叫Cairngorm 的面向Flex开发h员的开源框架。在q个pd里我解释?span class="hilite1">Cairngormq后的主要思想?
Adobel出的设计挑战?span class="hilite1">Cairngorm是一个合适的开发架构?
q个pd使用Cairngorm StoreCZE序来解释当ZCairngorm 开发时Adobe Consulting关于scoping、estimating和delivering
富Internet应用(RIA)的思考。我也解释了Cairngorm 的多U概念ƈ深入Cairngorm Store的实现?
最后,我通过?span class="hilite1">Cairngorm开发h员的角度d一个新Ҏ到Cairngorm StoreE序来示范基?span class="hilite1">Cairngorm微架构发布RIA的主要好处。通过q一步,你可以自q?span class="hilite1">Cairngorm的好处?
Cairngorm 当然不是构徏Rich Internet Application的唯一方式。但是,Adobe Consulting在已有的FlexE序开发经验的基础上曾
使用本系列文章里的信息来帮助大量客户和合伙h成功发布大规模Flex RIA?
q个pd从理?span class="hilite1">Cairngorm的动机和概念到基?span class="hilite1">Cairngorm架构你自qE序完整的介l了Cairngorm ?
W一部分提供了理?span class="hilite1">Cairngorm架构的上下文和背景,而不是从一开始就一头扎q代码里。我讨论了框Ӟq澄清了E序框架和架?
框架之间的区别。然后我介绍了设计模式和微架构概c最后,我给?span class="hilite1">Cairngorm出现的背?它的历史和roadmap?
在第二至六部分,你将在客L和一个J2EE服务器端使用Flex?span class="hilite1">Cairngorm开发一个零售商业程序?
澄清框架的定?/strong>
在Y件开发里Q框架这个术语是承受最多和最滥用的术语。当开发h员写了大量代码ƈ认ؓ_重要来在其他目中用,他们向
于给代码赋予q个术语。这样就有了许多cd的框?持久框架、事务框架、日志框架、面向方面框架、动L架、单元测试框架等{?
在深入讨?span class="hilite1">Cairngorm框架之前Q解释Adobe Consulting团队与客户和合伙人分享的关于框架认识的区别很重要 -- 特别是程序框架和架构框架间的区别?
E序框架
Flex是程序框架的一个典型的例子。即发布的Flex 2.0事实上在架构上区别于E序框架 -- 通常在Adobe里称?app model"。Flex框架2.0提供丰富的类库来提供高粒度功能性供开发h员创定义的代码。例如,Flex 2.0集合API提供开发h员用来创建受的数据集合的底层功能性。开发h员组合这些集合ؓ他们的特D程序的高对象。而且Q程序框架如Flex也暴露了E序U的服务Q如history理、layout理、cursor理、exception handling、i18n、logging{等?
当框架提供高_度cd来给开发h员提供高U别灉|性,或者当框架提供对多开发h员的目有用的程序服务Ӟ我们仍可以称其ؓ"E序框架"?
另一个程序框架的例子是Adobe Consulting使用的非常成功的FAST框架 。FAST框架提供了程序服务如logging、tracing和承了Flex1.x框架自己的RPC data services的value-addcdQ这在John Bennett的文章里也有所解释:
Faster Development with the Flex Application Starter Toolkit(FAST)
架构框架
架构框架是完全不同的野兽。架构框枉了提供给E序可以悬挂的基l织 -- 提供骨架和内部结构来负蝲肌肉外不提供M额外的服务给开发h?
换句话说Q架构框架提供你的程序的技术架构通常的入口点?
使用设计模式
不关注Y件工E里重大的改q?-- 设计模式的话Q很难谈论技术架构?
"there is nothing new under the sun"q句话在软g工程原则里是再正不q了。开发h员发C们在E序开发中l常遇到不变的工E问题。而他们的解决Ҏ也和所遇到的问题一样重复不变。不这些重复出现在哪里Q你可以这些解x案视?模式"?
设计模式的诱?/strong>
现在有一个警?当Y件工E师W一ơ遇到设计模式时Q对工程问题解决Ҏ的分cȝ意识可能非常强大。通常开发h员发现问题的子集q希望寻扑օ他可以利用的设计模式。尽如此,"when all you have is a hammer, everything looks like a nail"q句老谚语在q里是适用的。你l常会在E序里发?模式q度"Q开发h员抛弃了cM及协作的责QQ而是把Q何东襉K扔到Factory、Flyweight、Observer或Decorator里?
但是Q合理的使用设计模式会成为开发h员的工具里一个强大的工具。设计模式不仅仅提供问题常见的解x案,而且开发h员在E序中用设计模式的方式也指CZ实现的目的。例如,不管何时你在代码中用SingletonӞ你理解这是一个应该只有一个实例的cR类似的Q无Z时你遇到一个FactoryӞ你会意识到工厂类可以产生一些不同的对象?
微架构作计模式的l合
...
Cairngorm 的历?/strong>
iteration::two是我和Alistair McLeod创立的Y件咨询公司,我们意识到要面对的许多在J2EEE序开发里成功解决的设计挑战在RIA世界里仍然存在。我们回到Flash、Flash Remoting和J2EE的RIA开发历双Ӏ?
览Sun Microsystems提倡的设计模式Core J2EE Pattern Catalog Q我们首先在Reality J2EE: Architecting for
Macromedia Flash MX(Pearson Education, 2003)q本书里展示了Flash中这些模式的应用。随着Flash MX 2004的发布,我们?
Macromedia Flash MX 2004 ActionScript2.0 Dictionary(Macromedia Press, 2003)一书的"ActionScript 2.0 Design Patterns
for RIA Development"一章中也展CZq些模式?
׃RIA技术^CFlash作ؓ设计中心到Flex~程来成熟,使用q些模式的动Z出现了。但是,Flex~程模型l我们更优雅的方式来实现q些模式。而且Q一些我们认为对Flash RIA开发h员非常有用的模式(例如|ViewHelper模式)在Flex RIA世界变得不再有用Q我们也创徏了一些自q新的FlexҎ的模式,例如ModelLocator模式?
?a target="_blank">MAX 2004中我们宣布了我们发布ZFlex的开?span class="hilite1">Cairngorm框架的决定,q在C中得到广泛媄响?
Cairngorm 教会你什?/strong>
Cairngorm 是一个宣布了3个重要领域的微架?
1, 在客L处理用户动作
2, 装业务逻辑和服务端交互
3, 在客L理状态ƈ展示该状态到用户界面
Cairngorm 提供一个微架构(一些设计模式的集合)Q目标是解决上述重复出现?个设计挑战?
当你阅读本系列文章时Q你学习如下内?
1, Front Controller和Command模式怎样实现"Service to Worker"微架构来监听和响应用戯?
2, Business Delegate和Service Locator模式怎样工作来让你重用业务逻辑q封装它来在客户端和服务端开发团队之间徏?
一个清晰的契约q且与服务端实现无关Q如Web ServicesQEJBQColdFusionlg甚至HTTP上用XML的RESTful 架构?
3, J2EE里的Value Object模式怎样与ModelLocator模式协作来作Z个优雅的{略使用丰富用户体验l护有状态客L
Cairngorm 的当前状?/strong>
]]> flexZ事g http://www.aygfsteel.com/xiejiangboblogjava/articles/248847.htmlI'm God ! I'm God ! Mon, 29 Dec 2008 03:06:00 GMT http://www.aygfsteel.com/xiejiangboblogjava/articles/248847.html http://www.aygfsteel.com/xiejiangboblogjava/comments/248847.html http://www.aygfsteel.com/xiejiangboblogjava/articles/248847.html#Feedback 0 http://www.aygfsteel.com/xiejiangboblogjava/comments/commentRss/248847.html http://www.aygfsteel.com/xiejiangboblogjava/services/trackbacks/248847.html 现在用cairngorm框架q行flex目开发,׃flex是基于事件的Q就把项目里面比较常用得监听记录下来
一Q添加一个监?/p>
CairngormEventDispatcher.getInstance().addEventListener( " createNewMap " ,onSpiderViewEventHandler);
z֏一个监?/p>
CairngormEventDispatcher.getInstance().dispatchEvent( new CairngormEvent( " createNewMap " ));
二:对类的变量进行监?br />
ChangeWatcher.watch(zoomSlider, " targetZoom " ,zoomSliderChangeHandler);
this .dispatchEvent( new SpiderCreateZoomSliderEvent(SpiderCreateZoomSliderEvent.SPIDER_CREATE_ZOOM_SLIDER,zoomSlider));
private function zoomSliderChangeHandler(e:Event): void
{
uicontroller.applyZoom(zoomSlider.targetZoom);
}
]]>
վ֩ģ壺
|
|
ɽ |
|
Ͽ |
|
|
Դ |
|
ԭ |
|
|
ũ |
˫ |
¹ |
Ӣ |
ɽ |
|
|
հ |
ˮ |
« |
|
گ |
|
ɼ |
|
ɯ |
|
γ |
ԭ |
ɼ |
|
|
е |
|
|
Դ |
Զ |
ٲ |
|