《2023电力web开发框架分析.docx》由会员分享,可在线阅读,更多相关《2023电力web开发框架分析.docx(21页珍藏版)》请在第一文库网上搜索。
1、电力web开发框架分析(AjaxTapestry+Spring+Hibernate)目录1 .什么是WEB框架(WebFramework)32 .如何选择WebFramework33 .建立WEB框架的目的和功能设想3Web框架的目标3Web框架需要什么44 .WEB框架的选型4选择SP1ing作为容器4选择SPrMgMVC作为视图层.5选择AjaX、Tapestry作为UI层.6选择Hibemate作为持久层.8综述.85 .WEB框架的搭建8建立工程.86 .进行整合:13整体构架.13Spring与Hibemate的整合15Tapestry与Spring的整合171 .什么是Web框架(
2、WebFrameWOrk)当你准备开发Web应用程序时,需要涉及到相当多的问题,包括界面设计、业务逻辑、数据库操作、异常处理等等一系列技术细节。幸运的是,已经有不少开发者已经遇到过这类重复发生的问题,并且建立了处理这类问题的框架,框架的目标是: 减轻开发者处理复杂的问题的负担(“不重复发明轮子”); 内部定义为可扩展的; 有一个强大的用户群支持。框架通常能够很好的解决一方面的问题。然而,你的应用程序有几个层可能都需要它们各自的框架。就如解决你的用户接口(UD问题时你就不应该把事务逻辑和持久化逻辑掺杂进来。例如,你不应该在控制器里面写jdbc代码,使它包含有业务逻辑,这不是控制器应该提供的功能。
3、它应该是轻量级的,代理来自用户接口(U1)外的调用请求给其它服务于这些请求的应用层。好的框架自然的形成代码如何分布的指导。更重要的是,框架减轻开发者从头开始写像持久层这样的代码的痛苦,使他们专注于对客户来说很重要的应用逻辑。2 .如何选择WebFramework现在业界基于OPenSOUrCe的框架项目非常繁多,但是很少有一种框架能够解决所有的问题,比方说Struts、webWorkTaPeStry解决了前台页面数据流转的控制;Hibernate、iBatis解决了数据库访问和数据持久性控制;Spring解决了业务逻辑的动态映射控制;因此,我们需要根据项目的特点有针对性地进行框架的选择和整合,
4、比如Tapestry+Spring+Hibernate(iBatis)Struts+Hibernate(iBatis)、StrUtS+Spring+Hibernate(iBatis),无论最后选择什么样的框架,选择的原则永远是一样的:不要为了使用框架而选择框架,而是选择最合适的、最简捷的框架!3 .建立Web框架的目的和功能设想web框架的目标框架是为某一特定目的(如:电力生产系统或其他Web应用)实现一个基本的、可执行的架构。框架中已经包含了应用程序从启动到运行的主要执行流程,执行流程中那些无法预先确定的步骤(如用户具体的业务逻辑、前端展现的界面等)留给用户自己来实现。程序运行时,框架系统自
5、动调用用户实现的功能组件。使用一个Web框架的目的:简化开发过程,由框架提供经常使用的业务处理,比如O/R映射; 设定了基本的编程模式,降低进入门槛,提高开发质量,并节约开发时间; 让框架处理未来系统不断扩展的应用需求,满足系统之间的集成;Web框架需要什么企业应用从逻辑上说无外乎包括:用户界面,用户的业务逻辑,数据库,这也就是提供了一揽子解决方案的开发工具能流行的原因:比如PB,Dephi,VB,他们都提供了这些功能并能快速开发。同样,现在的Web项目也需要解决类似的问题,所以Web框架需要一个界面表达能力强的U1层;一个适合表达各种用户逻辑的业务层;和能把java对象值映射到数据库中的0/
6、R层;如果用户业务逻辑复杂,系统中势必包含了大量的业务对象,业务模块,如何做到让各个业务模块,业务对象松耦合关联,减少组件间的依赖关系,改善代码的可重用性,也许在Web框架中还需要一个依赖注入的管理层。综上所述,一个能构建复杂的业务逻辑的Web框架,应该包括:1 .表达能力丰富的UI层2 .能管理依赖注入的管理层,协调各个业务模块,对象的关系3 .健壮的0/R映射层4 .Web框架的选型选择Spring作为容器在选择AOPZIoC容器上目前有2个选择SpringHivemind版本当前myEc1ipse带的spring版本为1.2.6o当前最新的版本己经到了2.0HiveMind是tapest
7、ry的作者开发的,一般来说tapestry4选择hivemind1.1;tapestry3选择hivemind1.0。功能SPring支持业务功能的依赖注入(在appIicationContext.xm1文件中配置),AOPMoC的完美实现,并支持与hibemate3%tapestry3的集成,支持JMS,MAI1、RM1以及支持时序调度(QuartZ、Timer)oSPring就是个超大型的架构容器,可以集成目前绝大部分框架。文档比较完整,文档只说明了如何与t3整合,没有和t4整合的文档Hivemind支持服务的依赖注入,在hivemodu1e.xm1中配置。Hivemind和tapestr
8、y结合的应该是最紧密的。但tapestry是在3.1的基础上加入hivmind功能,我们目前使用的是tapestry3.0.3版本,加之文档稀少,配置很困难。曾经尝试配置了t3和hivemind1.0;t3和hivmind1.1,以及t4和hivemind1.1,都无法实现服务注入(总是提示为nu11,也许是方法不对),终于放弃,等将来的插件进行支持。工具支持MyEc1ipse直接支持spring没有工具支持,hivemind包括在tapestry4中,但目前还没有插件来支持tapestry4,当前支持的版本为tapestry3应用SPring有着大量的应用案例HiveMind目前应用案例较少
9、,多数还用于研究学习综合来说,Spring比Hivemind要强大并且成熟,相应的文档和资料也丰富,而且已经搭建了一个可以运行的框架,所以拟在框架中采用SPring作为AOP/IoC层。SpiiiigAOPSource-1eve1metadataAOPInfrastnictuiieSpiiiigORMHibemateiBATISJDOSpiiiigWEBWebApp1icationContextMutipartreso1verWebuti1itiesSpiiiigDAOTransactionInfrastructureJDBCsupportDAOsupportSPri11gContextApp
10、1icationContextUIsupportVa1idationJNDkEJB.JMS、Mai1RM1WebSeviceSpriiigMVCWebMVCFrameworkWebViewsTaPeSt1yJJSFJSPsJST1XM1Ti1esPDFsExportSpiiiigCORESupportinguti1itiesBeancontainer选择SpringMVC作为视图层目前基于OPenSOUrCe的MVC框架非常丰富,例如SpringMVC、StrutsWebWorkFreeMarker等等,都有着各自的特点。选择一种好的WebMVC框架会从如下几个方面入手: 提供控制器和视图的能
11、力 提供数据分页、循环显示、逻辑判断的支持 提供友好的UR1认证支持 提供前端数据的有效性校验 提供页面的可测试能力 与SPring框架的集成StrutsSpringMVCWebWork控制器和视图通过继承Action类对JSP进行控制通过继承Simp1eFormContro1Ier类实现对Web页面的控制通过继承ACtiOnSUPPort类实现对Web页面的控制分页处理通过丰富的自定义标签库Tag进行分页、循环、判断的处理通过JSPStandardTag1ibrary(JST1)进行分页、循环、判断的处理通过自定义的标签库处理UR1认证支持可以支持容器提供的认证和授权可以支持容器提供的认证和
12、授权可以支持容器提供的认证和授权有效性校验使用CommonsVa1idator进行有效性校验使用CommonsVa1idator进行有效性校验使用OGN1库进行有效性校验页面测试通过StrutsTestCase满足TDD(Test-drivendeve1opment)和XP开发模式通过Mock类(EaSyMoCk和jMock或者SPring自身的MOCk类)满足TDD(Test-drivendeve1opment)和XP开发模式通过Mock类(EasyMock和jMock)满足TDD(1est-drivendeve1opment)和XP开发模式Spring集成完美结合完美集成很好结合优点广泛流
13、行;拥有很多信息和示例;HTM1标签库是一个非常生命周期由重写绑定,效验等确定;能够无缝隙地与各种表现层程结构简单,容易被扩展:标签库容易被自定义,并获得Ve1ocity好的东西。他的标签库成为Tag的标准。序结合在一起,如JSP,XS1等:基于IoC容器使得很容易测试。支持:拦截机制成熟可靠。ACtion可以非常容易地被测试。缺点ActionForms非常恶心,编写起来非常麻烦,工作重复;不能够做单元测试;Contro11er是Sing1eton的,或者是线程不安全的。相对较少的被使用;而且需要在JSP中写入大量代码;太灵活了,反而不能得到通用的控制。Contro11er是Sing1eton
14、的,或者是线程不安全的。其文档最近才出现,示例很少;客户端效验很不成熟。注意事项:由于SpringMVC和Struts一样,Contro11er都是Si11g1etOn(单例模式),因此在编写Contro11er时,注意一个原则,hand1eRequest方法要尽量简洁,复杂的业务处理交给SerViCe层处理,这样可以有效避免Sing1eton带来的冲突。选择AjaxTapestry作为UI层一直以来,在J2EE领域,U1层技术首先想到的就是JSP,JaVaSerVerPageS(JSP)技术为创建显示动态生成内容的Web页面提供了一个简捷而快速的方法。静态HTM1对于显示相对静态的内容是不错
15、的选择,但是新的挑战在于创建交互的基于Web的应用程序,在这些程序中,页面的内容是基于用户的请求或者系统的状态,而不是预先定义的文字。JSP技术的设计目的是使得构造基于Web的应用程序更加容易和快捷,而这些应用程序能够与各种Web服务器,应用服务器,浏览器和开发工具共同工作。JavaServerPages(JSP)技术就是被设计用来满足这样的要求的。JSP规范是Web服务器、应用服务器、交易系统、以及开发工具供应商间广泛合作的结果。 能够在任何Web或应用程序服务器上运行 将应用程序逻辑和页面显示分离 能够快速地开发和测试 简化开发基于Web的交互式应用程序的过程但是随着web应用对UI要求的不断提升,单纯JSP已经不能满足要求,J2EE一直在寻找一种更完美的解决方案,这就有了Ajax、TapestryJSF、Ti1eS等等的出现,这些技术在一定程度上满足了复杂U1的应用要求。当前最热门的Web技术是什么?很明显,AjaX已经成为不可忽视