`
pterodactyl
  • 浏览: 771409 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

多层架构的Web开发框架模型

    博客分类:
  • java
阅读更多

摘要:在经典的J2EE四层体系结构的基础上增加数据持久层,提出了基于J2EE五层体系结构的Web开发框架;分析了基于Struts框架的J2EE架构中实现对象持久性的局限性,从中分离出对象持久层,并将Hibernate这个面向对象的轻量级对象持久性技术集成到该架构中;应用DAO设计模式在业务逻辑层与持久层之间设计了多源数据访问组件,抽象和封装了对不同数据源的数据访问操作,实现对不同类型、结构、环境、用法的异构数据库的统一访问。
  关键词: J2EE; 模型—视图—控制器; Struts; Hibernate; 多源数据
  中图分类号:TP302.7文献标志码:A
  文章编号:1001-3695(2008)05-1429-03
  
  1多层架构的Web开发框架模型
  
  1.1J2EE五层体系结构设计
  随着Web应用需要更复杂的表现和逻辑处理,J2EE提出了一种四层体系结构,如图1所示。该结构分为客户层、Web层、业务逻辑层、数据库层。应用的逻辑处理和表现相分离,使得系统具有更为逻辑流程清晰、功能代码复用性强、分布式部署的特点。但是在大多数的实际项目应用中,数据层是关系型数据库,不能明确映射要实现的面向对象的机制,业务逻辑层与数据库交互的过程需要对数据库调用接口作进一步的封装,这在项目的开发和维护上会增加一定的复杂性和管理的难度。一种有效的解决方案是把业务信息按照功能模块拆分开:业务逻辑与数据库访问分开,用户界面与业务逻辑分开,彼此相对独立,任何一方的改变均不会影响对方,或者影响不大。因此本文提出在业务逻辑层与数据库层之间增加一个数据持久层,将四层体系扩展为如图2所示的五层体系,即客户层、Web层、业务逻辑层、数据持久层和数据库层。数据持久层位于数据库之上,隐藏数据读取和操纵中的所有数据访问代码细节,将客户应用程序与底层存储机制隔离开,完全抽象出开发应用程序时使用的数据物理细节。
  业务逻辑层与数据层之间增加一个数据持久层,实现对象与关系数据库之间的映射。利用这个映射框架的机制,对象与关系数据库之间的转换就可以透明地进行,而不用去关心数据库连接、并发性、事务等问题。业务逻辑层直接获取或存储的是清晰的对象,中间的转换过程交给映射框架来处理。
  
  在分层设计中,各层提供的接口是进行层间通信的基础,遵循的原则是实现严格的层间独立、分离,各层的实现细节不对外公开。分层设计图层间通信说明如下:
  a)客户端与表示逻辑层通过HTTP通信,即通过Http-Request和HttpResponse分别接收用户输入和返回执行结果给用户。
  b)表示逻辑层使用Struts框架技术实现,提供了接收/响应客户端请求、控制整个系统工作流程、通过调用action与业务逻辑层交互,以及格式化业务数据并动态生成Web页面等功能。
  c)业务逻辑层与持久层的交互则是JavaBean对Hibernate的调用,通过数据访问对象DAO进行调用。
  d)持久层与数据库的通信是完全由 Hibernate负责的,它将实体映射到数据库,对持久对象操作,并将缓存中的结果同步到数据库。
  1.2集成Struts框架与Hibernate框架实现MVC设计模式
  Struts作为基于模型—视图—控制器模式的应用架构,具有组件的模块化、灵活性和重用性的优点。但是Struts框架主要是针对表示层设计的,对于后端的业务逻辑层支持不是很强,在进行项目开发中存在以下局限:
  a)只能横向分工,按模块来划分工作,软件开发成本相应较高;
  b)需要花很多时间在数据层的包装以及不同模块之间进行协调和沟通,导致开发时间的增加;
  c)项目移植性相对较差,可能需要为不同数据库编写不同的SQL语句;
  d)项目扩展性相对较差,适应新的需求或变更时要修改数据库表结构、重新编写SQL语句、备份数据库等,对人员要求也相应较高;
  e)由于开发人员数据库操作水平参差不齐,开发经验也不尽相同,导致系统性能可能会相对较差。
  Hibernate是一个开放源代码的O/R mapping(对象/关系映射)框架,它对JDBC进行了轻量级的对象封装,以面向对象机制来处理数据库操作。Hibernate不仅管理Java类到数据库表的映射,还提供数据查询和获取数据的方法,大幅度减少开发时人工使用SQL和JDBC处理数据的时间。
  笔者认为应该将Hibernate集成到J2EE架构中,从Struts框架中分离出对象持久性相关部分,交给Hibernate来实现。根据Struts的体系结构,数据库操作工作是由模型层负责处理的,因此可以将Struts中的模型层分成两部分:一部分负责业务逻辑;另一部分使用Hibernate实现对象持久性处理。同时分离出具体业务逻辑,新建一个业务逻辑层,专门负责用Hibernate来实现业务逻辑和持久性对象的交互。
  图3显示了集成Struts和Hibernate的 MVC 模型。Struts和Hibernate框架的整合实现了控制流、业务调用、表示这三者的分离,使系统在开发效率、可维护性、可扩展性方面均有良好的改进。在本模型中,客户层可以看做是V,它是由浏览器显示给用户的 DHTML 界面;业务逻辑层和持久层则为 M,它是系统的核心部分,由 JavaBeans 和 Hibernate 组成;Web 层对应 C,它控制用户对业务逻辑的操作,同时控制将操作结果显示给用户,由 Servlet 和 JSP 程序组成。其中 PO 是调用模型层产生的持久对象,通过 JSP 页面显示给用户。
  1.3集成Struts和Hibernate实现J2EE分层架构
  根据前面的分析,将Struts与Hibernate框架进行集成,构成了一个新的Web应用的开发框架,实现了J2EE应用系统的多层架构。该框架一方面继承Struts框架在表示层的优点,提供完善的标记库,负责页面请求的接收和转发,实现了表示逻辑和业务逻辑的分离;另一方面在数据持久层等方面发挥Hibernate框架的特点,由Hibernate框架实现持久层和事务的封装,使业务逻辑与数据库访问分开。这样形成一个层次清楚、更加简洁、功能更加完善的Web框架,降低各个层次之间的耦合,提高组件的可重用性,减少在代码编辑方面的复杂性,有利于开发人员将注意力集中在业务逻辑的实现上,有利于系统的可维护性等。
  
  集成Struts和Hibernate实现J2EE分层架构如图4所示。系统采用的五层结构设计由客户层、Web层、业务逻辑层、数据持久层、数据库层组成。客户层运行在用户计算机的Web浏览器中;Web层运行在Web服务器中,它使用Struts框架技术实现,提供了接收/响应客户端请求,控制整个系统工作流程,与业务逻辑层交互以及格式化业务数据并动态生成Web页面等功能;业务逻辑层负责实现整个系统的核心业务逻辑,由JavaBeans或EJB来实现;数据持久层使用Hibernate框架技术实现,完成对象和关系的映射,负责对数据库进行操作。
  
  下面根据图4对系统的各分层功能进行简单分析:
  a)客户层。它是用户用浏览器看到并直接与系统交互的层,主要是由HTML语言形成的网页界面。
  b)Web层。它从客户层获得客户的输入,传递给业务逻辑层的组件,再将从业务逻辑层获得的处理结果以HTML文件的形式输出到客户端,形成网页界面。Web层由Servlet和JSP程序组成,封装在Web容器中。业务流程控制一般均由控制器Servlet来开发,响应用户的查询等请求并调用业务逻辑层的JavaBean来实现复杂的商务逻辑。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/monicaxiaoy/archive/2009/11/04/4768092.aspx

分享到:
评论

相关推荐

    论文研究-基于J2EE多层架构的Web开发框架研究.pdf

    在经典的J2EE四层体系结构的基础上增加数据持久层,提出了基于J2EE五层体系结构的Web开发框架;分析了基于Struts框架的J2EE架构中实现对象持久性的局限性,从中分离出对象持久层,并将Hibernate这个面向对象的轻量级...

    ASP.NET框架(多层架构)

    总结,ASP.NET框架在多层架构中的应用为开发者提供了强大而灵活的工具,帮助他们构建高效、安全的Web应用。无论是初学者还是经验丰富的开发者,都能从中受益,实现更高质量的软件开发。通过理解并熟练掌握ASP.NET...

    多层架构的大型.NET OA 系统

    【标题】:“多层架构的大型.NET OA 系统”是指采用Microsoft的.NET框架,以C#编程语言构建的企业级办公自动化(Office Automation,OA)系统。这种系统通常设计为多层架构,以提高可维护性、扩展性和复用性。 ...

    基于微软.net技术的的多层架构工程

    在软件开发领域,多层架构是一种常见的设计模式,它将应用程序分为多个逻辑层,每个层专注于特定的功能,从而实现代码的解耦、可维护性和可扩展性。微软的.NET框架为构建这样的多层架构提供了强大的支持。这个项目...

    Asp.Net Core 3.1 MVC+EF Core +SqlSugar ORM框架实例 多层架构示例Demo

    【Asp.Net Core 3.1 MVC】 Asp.Net Core 3.1 MVC 是一个高性能、跨...多层架构的设计使得代码结构清晰,便于开发和维护。此外,还提供了相应的解决方案文件和工作区配置,方便开发者在Visual Studio环境中进行开发。

    asp.net mvc多层架构源码

    ASP.NET MVC是一个强大的Web应用程序开发框架,由微软公司开发,用于构建可维护、高性能和具有优秀用户体验的Web应用。在本“ASP.NET MVC多层架构源码”中,我们可以深入理解如何利用MVC模式(Model-View-Controller...

    C#多层Web程序(学习用)

    在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Web应用程序时,它与.NET框架相结合,能够构建高效、安全的多层架构。本资源"**C#多层Web程序(学习用)**"旨在为初学者提供一个完整的示例,帮助理解并实践分层...

    MVC多层框架

    **MVC多层框架详解** **一、MVC模式** MVC(Model-View-Controller)模式是一种软件设计模式,广泛应用于Web应用开发...通过这样的学习,你可以逐步掌握MVC模式和多层架构的开发技巧,为今后的Web开发打下坚实基础。

    asp.net 多层架构

    ASP.NET多层架构是一种设计模式,它将应用...总之,ASP.NET多层架构提供了构建高效、可维护Web应用程序的强大基础。通过深入了解和实践这种架构,开发者可以更好地应对复杂项目的挑战,同时提高开发效率和软件质量。

    MVC多层架构

    **MVC多层架构详解** MVC(Model-View-Controller)是一种广泛应用于Web开发的软件设计模式,它将应用程序的逻辑分离成三个主要部分,从而提高了代码的可维护性和可扩展性。在这个项目中,"MVC多层架构"指的是使用...

    Mvc+IOC 、多层架构

    总结起来,Mvc+IOC和多层架构是现代Web应用开发中的重要技术,它们提供了良好的结构和灵活性,有助于创建可扩展、可维护的软件系统。而"Demo"项目则可以作为一个学习和参考的实例,帮助开发者更好地理解和应用这些...

    基于MVC设计模式的WEB应用框架研究

    MVC(Model-View-Controller)设计模式是软件工程中一种广泛应用于Web应用开发的架构模式,尤其在J2EE环境中,它有效地分离了应用程序的不同部分,提高了代码的可维护性和可扩展性。MVC模式的核心思想是将应用分为三...

    02_多层架构概述(struts)

    Struts是Apache软件基金会的一个开源项目,它是一个用于构建Java Web应用的MVC框架,尤其在实现多层架构方面表现出色。 首先,我们要理解什么是多层架构。多层架构通常包括三个主要部分:表现层(Presentation ...

    ejb struts多层架构例子

    在Java Web开发中,EJB(Enterprise JavaBeans)和Struts是两种重要的技术,常被用于构建企业级的、基于模型-视图-控制器(MVC)架构的应用程序。本例子以“网上银行系统”为背景,展示了如何整合这两者来实现一个...

    反射工程+多层架构+log4net日志

    在.NET开发领域,C#语言是常用的一种编程语言,而.NET MVC(Model-View-Controller)框架则为构建Web应用程序提供了强大的支持。本项目结合了“反射工程”、“多层架构”以及“log4net日志”这三大关键概念,旨在...

    一种Java EE多层架构下的大学物理实验系统.pdf

    综合以上内容,文章介绍的Java EE多层架构下的大学物理实验系统,旨在通过整合现代Web开发技术和架构设计,提升物理实验教学管理的自动化程度。该系统使用了Maven进行项目管理,应用了SSH2框架来实现基于MVC设计模式...

    ssh学习 Web开发流行架构

    Struts+Hibernate+Spring是Java领域中非常流行的Web开发架构,被称为SSH框架。这个框架组合提供了强大的功能,用于构建灵活、可扩展的多层Web应用程序。以下是对SSH框架的详细说明: **Struts** 是一个基于MVC...

    基于SharePoint的Web应用开发模型.pdf

    基于SharePoint的Web应用开发模型,是一个深度探讨如何利用Microsoft SharePoint平台进行高效Web应用开发的专业话题。SharePoint作为微软的一款企业级协作平台,不仅提供了强大的文档管理、内容管理和信息共享功能,...

Global site tag (gtag.js) - Google Analytics