您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 网站策划/UE > Flex企业级开发框架
企业级Flex开发框架对比架对比RIAMeeting.com李文磊郭少瑞李文磊郭少瑞2010/4/23常见的开发框架Cairngorm(Adobe官方)SpringActionscript(Spring官方)ParsleyPMVCPureMVCMateMateSwizSwizAdobeFlashPlatformSummitChina2010常见的开发框架Cairngorm(Adobe官方)轻量级架构框架,包含RIA应用中常见问题的解决模式模式多个设计模式结合汇聚成一个比单一模式更有效多个设计模式结合汇聚成个比单模式更有效的集合体基于社区开发过程中遇到问题汇集而成的解决方基于社区开发过程中遇到问题汇集而成的解决方案,帮助开发者高效解决问题AdobeFlashPlatformSummitChina2010常见的开发框架SpringActionscript(Spring官方)Spring官方提供的IoC容器支持比较全面的IoC特性(相对其他IoC容器)提供与Aii特性相关的些特别解决方案提供与Actionscript特性相关的一些特别解决方案(事件托管,远程数据加载)强大的扩展性(自定义标签等)AdobeFlashPlatformSummitChina2010常见的开发框架PureMVCMVC结构化框架MVC结构化框架支持组件重用度高支持组件重用度高支持FlexModule支持FlexModuleAdobeFlashPlatformSummitChina2010常见的开发框架ParsleyAdobe官方咨询团队推荐的IoC容器AdobeCairngorm3的IoC容器实现消息托管机制消息托管机制视图动态绑定视图动态绑定FlexModule支持本地化支持本地化支持框架扩展AdobeFlashPlatformSummitChina2010Parsley背景•Parsley是Spicefactory旗下基于Actionscript3的开发ypyp结构框架•SpiceFactory是大名鼎鼎的Powerflasher(FDT作者)的一个开源项目其中包括服务端以及客户端的一些个开源项目,其中包括服务端以及客户端的些Flash/Flex/AIR/Java相关的一些项目•Adobe咨询团队推荐的一个IoC实现AdobeFlashPlatformSummitChina2010Parsley特点•IoC容器•IoC容器•消息框架(消息托管)AdobeFlashPlatformSummitChina2010Parsley—IoC容器-配置兼容多种形式•可以在Flex中直接使用MXML进行配置•可以使用XML进行配置可以使用Actionscript代码进行配置•可以使用Actionscript代码进行配置•多种配置方式可以在最后整合到一起。没有任何区别和限制何区别和限制。AdobeFlashPlatformSummitChina2010Parsley—IoC容器Metadata配置Metadata[Inject]publicvarservice:LoginService这个标签在IoC容器中可以实现与Java版Spring的Autowire类似的功能。Autowire类似的功能。[Inject(id=mainLoginService)]也可以指定id来注入AdobeFlashPlatformSummitChina2010Parsley—IoC容器MXML配置mx:Objectxmlns:mx=={UM}/Objectid=userManagertype={UserManager}/Objectid=loginServicetype={LoginServiceImpl}Objecttype={LoginAction}jy{g}ConstructorArgsObjectRefidRef=userManager//ConstructorArgsPropertyname=serviceidRef=loginService//ObjtAdobeFlashPlatformSummitChina2010/ObjectParsley—IoC容器XML配置objectsxmlns==loginService“typecombookstoreservicesLoginServiceImpltype=com.bookstore.services.LoginServiceImplpropertyname=timeoutvalue=3000//objectobjectid=userManagertype=com.bookstore.services.UserManager/objecttype=com.bookstore.actions.LoginActionconstructor-argsobject-refid-ref=userManager/jg/constructor-argspropertyname=serviceid-ref=loginService//object/object/objectsAdobeFlashPlatformSummitChina2010Parsley—事件消息机制其他框架一般情况下处理全局事件方式:单例全局事件播发(Cairngorm2)CairngormEventDispatcher.getInstance().dispatchEvent(loginEvent);或loginEvent.dispatch();(前提:loginEvent是个CairngormEvent的子类)(前提:loginEvent是一个CairngormEvent的子类)AdobeFlashPlatformSummitChina2010Parsley—事件消息机制Parsley的事件消息机制1.组件不必依赖甚至不必“知道”框架的存在2.功能强大并且灵活Parsley是一个消息托管容器Parsley是一个消息托管容器AdobeFlashPlatformSummitChina2010Parsley—消息机制概览消息派发框架监听此消息转给系统中注册的消息处理器Paseley框架息处理器Paseley框架LoginServiceImplSomeHanlderSomeHanlderhandleLogin(message:LoginMessage)LoginMessageAdobeFlashPlatformSummitChina2010Parsley—事件消息机制Parsley派发消息的三种方式:1.托管的事件2.注入消息派发器3.使用消息APIAdobeFlashPlatformSummitChina2010Parsley—托管的事件(Metadata配置)[E(liSbkLiE)][Event(name=loginSuccess,type=com.bookstore.events.LoginEvent)][Event(name=loginFailed,type=com.bookstore.events.LoginEvent)][Event(name=stateChange,type=flash.events.Event)][ManagedEvents(loginSuccess,loginFailure)]publicclassLoginServiceImplextendsEventDispatcherimplementspgpppLoginService{[...]privatefunctionhandleLoginResult(user:User):void{{dispatchEvent(newLoginEvent(loginSuccess,user));}}AdobeFlashPlatformSummitChina2010Parsley—托管的事件(MXML以及XML)Objecttype={LoginServiceImpl}MdEtManagedEventsnames=[‘loginSuccess’,’loginFailure’]//Object--------------------------------------------------------------------objecttype=com.bookstore.services.LoginServiceImplmanaged-eventsnames=loginSuccessloginFailure/AdobeFlashPlatformSummitChina2010namesloginSuccess,loginFailure//objectParsley—注入消息派发器某些情况下:不希望继承EventDispather•不希望继承EventDispather•类已经继承自某个其他类,无法再继承类承自某个其他类,无法再承EventDispather可以通过注入消息派发器来完成这个工作以派发成消息派发器是一个方法(function),这个方法可以被注入到个类中AdobeFlashPlatformSummitChina2010被注入到一个类中。Parsley—注入消息派发器publicclassLoginServiceImplimplementsLoginService{{[MessageDispatcher]publicvardispatcher:Function;[][...]privatefunctionhandleLoginResult(user:User):void{void{dispatcher(newLoginMessage(user));}AdobeFlashPlatformSummitChina2010}}Parsley—注入消息派发器(通过XML配置)publicclassLoginServiceImplimplementsLoginService{publicclassLoginServiceImplimplementsLoginService{[MessageDispatcher]publicvardispatcher:Function;publicvardispatcher:Function;[...]privatefunctionhandleLoginResult(user:User):void{privatefunctionhandleLoginResult(user:User):void{dispatcher(newLoginMessage(user));}}}}AdobeFlashPlatformSummitChina2010Parsley—注入消息派发器(通过XML配置)objecttpecombookstoresericesLoginSericeImplobjecttype=com.bookstore.services.LoginServiceImplmessage-dispatcherproperty=dispatcher//object/objectAdobeFlashPlatformSummitChina2010Parsley—消息处理器(Messagehandler)接收并且处理消息Parsley可以自动根据消息类型匹配消息接收器:Parsley可以自动根据消息类型匹配消息接收器:[MessageHandler]publicfunctionhandleLogin(message:LoginMessage):vo
本文标题:Flex企业级开发框架
链接地址:https://www.777doc.com/doc-6152519 .html