计算机外文翻译 外文文献 英文文献Word文件下载.docx
《计算机外文翻译 外文文献 英文文献Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机外文翻译 外文文献 英文文献Word文件下载.docx(6页珍藏版)》请在冰豆网上搜索。
现阶段的WEB发展的特点是出现了大量的开源框架。
框架将Web开发提到一个更高的水平,使基本功能的重复使用成为可能和从而提高了开发的生产力。
在某些情况下,开源框架没有提供常见问题的一个解决方案。
出于这个原因,开发在开源框架的基础上建立自己的项目发展框架。
本文旨在描述是一个基于Java的框架,该框架利用了开源框架并有助于开发基于Web的应用。
通过分析现有的开源框架,本文提出了新的架构,基本环境及他们用来提高和利用其他一些框架的相关技术。
架构定义了自己开发方法,其目的是协助客户开发和事例项目。
应用程序设计应该关注在项目中的重复利用。
即使有独特的功能要求,也有常见的可用模式使用,这使得它们的设计和开发能重用。
本文介绍了一个“自定义”框架,这个框架用来定义能被开发者使用的相同的应用问题和定义设计模式。
这个框架,我们将称之为某某开发框架,提供了一套模式和工具,建立了行业最佳实践,使之适合常见的应用问题。
它提供了一个从表示到集成的应用程序开发堆栈。
本文阐明了这些应用问题和模式,工具和行业最佳实践。
某某开发框架可以根据各种项目的需求进行定制。
它的开发和配置是基于诸如Struts、Spring、Hibernate和JUnit之类的各种框架和工具。
二、开发框架的主要技术
2.1代码和配置的层与层之间的分离
Web应用程序有各种设计问题,如表现,商业逻辑,数据存取和安全性。
不同的代码层的分离设计有如下几个方面的优势,如:
便于维修,实施良好设计模式的能力,选择专门的工具的能力和具体问题的解决技术。
将一个项目进行层与层之间的分离导致了这些层之间的依赖关系。
例如,一个简单的使用案例,它涉及数据的输入和查询通常必须整合表示,业务逻辑和数据访问以达到所需的功能[3]。
因此,必须有一个明确的策略来管理这些依赖关系。
开发框架包括设计模式,可复用的代码和配置文件,使开发框架尽可能地容易的被使用。
这一框架使用Spring的反向控制来管理相依。
Spring框架[4]提供了一种方法整合各层成为一个应用项目。
它通过Spring应用上下文来完成这一目标,这是一个对象之间管理依赖策略。
Spring使用的依赖注入和拦截技术介绍如下。
我们所写的代码依赖于使用的对象。
它负责创建这些对象。
这可能导致紧耦合的,但我们希望我们的代码是松散耦合。
依赖注入是一个技术,可以帮助我们实现这一目标。
依赖注入是反向控制(IOC)的一种形式[5]。
当应用程序使用依赖注入时,代码将变得更加清洁和容易。
这就是松耦合,从而更容易配置和测试。
开发框架使用了多个Spring应用背景文件来定义层与层之间的依赖关系。
方法拦截是面向方面编程(AOP)概念[6]。
SpringAOP方法拦截是通过JDK动态代理来实现的。
开发框架使用SpringAOP来管理问如交易管理和性能监测等问题。
开发框架包括两个不同的部分:
代码和配置。
代码位于一个特定的应用层,并侧重于某一特定条件中的应用解决方案。
这可能要与数据库交互,或将数据显示给屏幕。
配置将应用的各个层联系在一起。
从代码中分离出配置使我们能够独立管理配置,使我们在同一代码基础上方便的进行不同的配置。
例如,数据访问对象(DAO)知道它是使用JDBC通过数据源来连接一个数据库的,但它不知道该数据源是如何实现的。
它可能是一个Java命名和目录接口(JNDI上下文或是来自驱动程序。
它可以指向远程数据库或本地数据库。
无论数据来自何处,DAO执行操作数据源的方式是相同的。
同样,服务对象可能依赖于DAO,但不知道DAO是如何实现,可能通过Hibernate,直接的JDBC,或Web服务。
互动服务对象与DAO有相同的方式,而不管DAO的实现。
Spring通过Spring应该上下文来管理我们的应用程序的整个配置,这些配置是一些XML文件。
我们可以在一个文件中定义应用的环境。
然而,我们可以在较小的文件中定义它来简化配置管理。
这样的应用环境文件的逻辑集合组成了一个被称之为配置集的完整的应用配置。
开发基于Java的企业应用的标准配置是在一个框架的配置中设置使用如数据源和JNDI的资源的外部资源。
这种类型的配置有些时候可能带来如下问题:
(1)尚未加载完全的数据库。
开发人员可能要测试某些类型的数据的显示,但如果基础数据尚未完成,他们将无法做到这一点。
(2)服务或DAOs可能还未被开发。
整合未完成的服务或DAOs可能阻碍发展的进程。
这些问题降低了生产力。
开发框架已从它的代码中分散其配置,我们可以针对开发使用有选择的配置集。
这可以减轻我们对外部系统的可用性的担心,这对于解决开发的中间需求是不相关的。
开发框架定义了两种配置集:
默认和独立。
我们还可以自定义应用,来增加基于我们项目需要的额外配置集。
默认配置使用在JNDI中的定义的数据源来连接数据库。
它完全使用了应用服务和DAOs。
独立的配置设置对开发而言是最灵活的。
此配置集:
(1)使用DriverManagerDataSource连接到任何本地安装的数据库或开发数据库;
(2)使用Spring的DataSourceTransactionManager作为本地事务管理;
(3)利用充分开发应用服务和DAOs;
(4)充分利用Spring应用上下文在应用服务器以外进行运行和测试。
开发框架通过它的应用上下文进行配置。
应用上下文被定义一个或多个XML文件。
一个配置集是定义一个应用上下文的一套XML文件。
配置集包括两部分:
服务和网络。
该服务定义了整合过程中的DAOs和资源。
一个配置不能同时完成这些部分。
开发框架配置集通过被Spring称之为bean映射上下文组合到一起,这些映射在beanRefContext.xml和applicationContextMapping.properties中定义。
beanRefContext.xml文件定义所有的配置的服务部分。
此文件位于的src/服务项目的配置目录下。
应用上下文之间共享也是通过这个目录下的配置来实现的。
此外,各配置有自己的子目录,其中包含自己的特定配置。
例如服务和DAOs通过配置集来共享,而支持服务(如数据源)则属于子目录。
XML文件在应用程序通过使用<
bean>
标记来定义Springbean。
Springbean是一个Java对象和通过应用上下文来初始化。
2.2类及其关系
利用开发框架,在一个典型项目中有如下的代码和配置:
(a)Action,ActionForm类和validation.xml文件;
(b)服务接口和实现类;
(c)DAO接口和实现类;
(d)以上这些的关系管理。
当我们开始我们例子的开发时,我们必须认识到所有这些类和他们的关系的重要性。
2.3测试技术
测试应是项目开发过程中的一个不可分割的组成部分的。
使用开发框架建立的应用程序,单元测试是指只测试服务或集成层的单一类。
表现层(Action类)不执行单元测试。
这种测试的目的是保证每个类的行为封装与预期一致。
项目中的单元测试是基于JUnit框架的[7]。
与单元测试不同,集成测试需要测试代码之间的相互依赖性。
这种测试的目的是以确保各个不同的类(不同的开发者开发的)整合在一起时也能想期望一样的运作。
在功能测试过程中,重点是采用不同的场景进行功能的测试。
典型的功能测试包括在业务层用不同的数据进行类的测试。
为了执行不同类型的测试,项目在开发过程中必须是测试可测试的。
下面列出的可测试项目的一些基本特性。
(1)开发单元的简单和集成测试。
我们可以在没有数据源,或排队的情况下执行单元测试。
当然,我们也能模拟相依赖代码而进行测试。
(2)有易于进程各种模拟测试场景的功能测试。
(3)在整个生命周期中方便重新运行所有测试。
(4)从应用代码中清楚的分离出测试代码来。
精心计划应用的各个设计问题,如表示,服务和数据访问对于可测试的应用是非常重要的。
应用程序编码以get方法、set方法、变量等开始。
单元测试是是其他任何测试方法的基础。
开发框架设计的便利的可测试应用开发的方法:
提供测试模板类来帮助建立单元测试,使应用更易于配置以适应测试需求。
单元测试可以运行像任何JUnit测试。
默认的专门开发的“建设脚本”提供了一个任务来运行单元测试。
这个任务部署的EAR文件,可以单独运行。
2.4页面表示设计
开发框架采用Struts框架和JavaScript来实现页面,并提供可扩展用于另外项目的额外功能。
当使用Struts框架进行发展,首先,我们在web.xml配置ServletAction;
然后在struts-config.xml中配置actionmapping,formbean和localforwards;
最后我们在validation.xml配置验证规则。
这种建立应用程序的方法在开发框架中已经发生了改变,开发人员不必要直接编辑config.xml或validation.xml文件。
相反,我们通过XDoclet注释直接在Action和ActionForm类中直接配置。
这些信息在运行Ant脚本时翻译插入struts-config.xml和validation.xml文件中。
有两种需要验证的类型:
数据格式验证和业务逻辑验证。
数据格式验证最好在表示层进行,而业务逻辑验证最好的在服务层进行验证。
在业务层发生的业务逻辑错误,必须通过抛出异常进行处理。
以下是表现层的设计目标:
(1)每个JSP文件只有一个Action类和ActionForm类。
一个单一动作类必须处理一个单一的页面;
(2)使用XDoclet定义依赖和验证规则;
(3)开发人员应该避免或尽量减少使用sessoin对象,因为它阻碍了可扩展性。
开发框架提供了一个默认的Action模板类,其中包含解决上述设计目标的方法。
以下是典型的开发web页面所需要的代码:
(1)创建一个带有称之为“actionType”默认隐藏域的JSP文件,用于处理在页面上发生的用户行为。
(2)创建一个扩展模板Action类的新的Action类。
我们必须使用XDoclet配置ActionForm和服务类之间的关联。
然后,我们就应该针对隐藏域“actionType”中的值来建立具体的处理用户动作方法。
最后,我们根据需要给这个Actoin类访问权限。
这就是Spring的配置文件所做的工作。
(3)创建一个新的ActionForm类,并用XDoclet注释指定验证规则。
一旦JSP,Action和ActionForm创建完成,就必须运行Ant脚本来重新生成“struts-config.xml”文件。
2.5数据库访问
通过框架建立的应用程序支持直接使用JDBC和Hibernate框架将数据持久化到关系数据库中。
应用程序通过Spring上下文文件进行配置。
直接使用JDBC的DAOs必须继承Spring框架中的JdbcDaoSupport.java类。
同样,使用Hibernate的DAOs必须继承Spring框架的H