、Entitv Beans、JDO、O/RMapping工具、XML-DBMS等方法。
此外,随着J2EE本身的快速发展,开发人员在架构和开发具有工业强度的J2EE应用时也出现了一些难题。
因此,很多厂家和开潭组织致力于框架的研究来降低开发J2EE应用的难度,从而使企业级应用具备更好的可移植性、重用性以及弱耦合等优点。
目前比较流行的框架有Struts、WebWork、Spring、Hibernate等。
Struts、WebWork侧重Web应用层,Spring在业务层上只涉及到应用IOC技术生成业务对象,对于如何建立业务类和业务对象之间的关系却没有涉及,Hibernate是一个O/R映射技术,重点在对象的持久化。
因此,本文试图从设计模式和JAVA技术入手,探究适合某一特定应用领域的业务层框架的,从而为后续开发业务层框架工作提供准备和参考,具有一定研究意义和实用价值。
1.2国内外研究现状1.2.1术语 1.体系结构(Architecture):定义了硬件或软件的主要特征,通常基于文档吼 2.框架(Framwork):不仅仅是文档(包括一些程序代码),但也不是产品。
其实就是某种应用的半成品,就是一组组件,开发人员可以选用框架完成他自己的系统。
框架一般是成熟的,不断升级的软件川。
3.模式(Patten):Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。
通过这种方式,你可以无数次地使用那些已有的解决方案。
无需在重复相同的工作16J。
1.2.2基于J2EE规范的框架研究 目前,国内外对框架的研究多在J2EE项目的Web应用层和持久层,著名的框架有Web框架Struts,Spring等;持久层技术Hibernate。
1.2.2.1 Web应用框架1.Struts框架川嘲【9】【10lla8} Struts已经成为了用Java创建Web应用的一个最流行的框架,Stmts所实现的MVC模式给Web应用带来了良好的层次划分,同时也提供了一系列的工具来简化Web应用的开发。
简单的Struts组件结构如图1-1示。
厂———〕 l均g libraries I 1.................一 2 田1—1简单的Struts组件结构 Struts Contloger为ActionServlet处理客户请求,利用配置ActionMapping对象把请求映射到Act/on处理器对象进行处理。
Action处理对象访问ActionForm中的数据,处理和响应客户请求,它还调用后台的Bean组件,这些组件封装了具体的业务逻辑。
Action处理器对象根据处理结果通知Controller,Controller进行下一步的处理。
Struts是建立在MVC模式上的,Struts在M、v和C上都有涉及,但它主要是提供一个好的控制器和一套定制的标签库上,也就是说它的着力点在c和v上,因此,它天生就有MVC所带来的一系列优点,如:结构层次分明,高可重用性,增加了程序的健壮性和可伸缩性,便于开发与设计分工,提供集中统一的权限控制、校验、国际化、日志等等;其次,它是个开源项目得到了包括它的发明者Craig R.McClanahan在内的一些程序大师和高手持续而细心的呵护,并且经受了实战的检验,使其功能越来越强大,体系也日臻完善;最后,Struts对其他技术和框架显示出很好的融合性。
当然,和其他任何技术一样,它也不是十全十美的,如:它对类和一些属性、参数的命名显得有些随意,给使用带来一些不便;还有如Action类execute方法的只能接收一个ActionForm参数等。
但瑕不掩瑜,这些没有影响它被广泛使用。
2.Spring框槊【“itl2】【133114l Spring仅仅是一个从2003年2月才开始的开源项目,但spring有深厚的历史根基。
这个开源工程是起源自在2002年晚些时候出版的(ExpertOne-on-OneJ2EE设计与开发》书中的基础性代码。
这本书展示了Spring背后的基础性架构思想。
然而,对这个基础架构的概念可以追溯到2000年的早些时候,并且反映了一系列商业工程开发基础结构的成功经验【ll】。
Spring的主要目的是使J2EE易用以及促进开发人员养成良好的编程习惯.S州ng为已建立的企业级应用提供了一个轻量级的解决方案,这个方案包括声明性事务管理, 通过RMI或Webservices远程访问业务逻辑,mail支持工具以及对于数据和数据库之间持久层的各种配置的支持。
Spring还提供了一个MVC应用框架,可以通过集成AOP透明的嵌入你的软件和一个优秀的异常处理体系,这个异常体系可以自动从属性异常体系进行映射。
Spring包含许多功能稚特性,并被很好地组织在图1-2所示的七个模块中。
3 圈1—2 Spring整体架构 Spri_ng core 主要提供Bean Factory和IOC Container,以及若干实用类-Spring框架对所有JavaBeans的管理是基于一个总入口Bean Factory机制。
BeanFactory可以管理所有应用的JavaBeans,开发人员只要将自己的JavaBeans通过配置文件告诉Bean.Factory,那么BeanFactory将会加载这些JavaBeans。
SpringAOP 提供运行时的AOP支持和原代码级的元数据支持。
SpringDAO 事务支持,/DBC包装类.DAO模式的支持。
Spring ORM 多种常见ORM技术的支持,如JDO、Hibcmam。
Spring Context对JNDI EJB JavaMail验证和UI。
Spring Web 基于Web的Context,透明的组件上传,Web开发使用类。
spingWebMVC MVC框架,JSP/ExceI/Pdf/XMlJVeloclty等多种视图技术的支持e 从图1-2可以看出,springFramework的模块性很强,你可以选择使用它的一个或多个功能,如仅使用它的BeanFactory/IOCContainer.甚至只使用它对JDBC的封装。
如果开发团队中比较熟悉Struts,则可以继续使用Struts作为Web框架,用Spring提供的JavaBean管理事务支持。
所以,虽然spring提供了One-Stop Shop的服务.但使用多少完全是开发人员的选择,这一点上不像一些别的技术,要么不用,要么都用。
BeanFactory和IOC容器 上文提到了BeanFactory和IOC容器,这是Spring中很重要的一个概念,是Spring的耩髓。
什么是BeanFactory? 经典的Factory设计模式分为工厂方法、简单工厂和抽象工厂。
把创建什么对象怎么创建的职责从类本身或是客户程序员处转到专门的工厂类中.确实提供了更好的封装和重用。
JDK中也随处可见这样的倒子,如SwingAPI中的BorderFactory。
但这一设计模式的问题在于工厂的责任过于重大——它需要了解很多被生产类的信息。
这甚至一定程度上违背了面向对象一个很基本的原则——开闭原则(Software entitiesshouldbeopenforextension,butdosedformodification.)。
一旦类发生了改变或是增加了新的类,往往工厂也得修改。
为此有人主张借助Java强大的反射功能来以不变应万变,动态生成类的实例。
比如原本的简单工厂为:public IStufffactory(String name).. i
上一篇:
基于J2EE与Flex技术的远程安全监控系统的研究与实现
下一篇:
不规则零件优化排样的神经网络混合优化算法