java三层架构

三层架构模式介绍

三层架构模式:

三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的即为了 “高内聚低耦合” 的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层。

表现层(JSP):

表现层也称为界面层,位于最外层(最上层),离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。

业务层(逻辑层、service层):

业务层(Business Logic Layer)无疑是系统架构中体现核心价值的部分。它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域(Domain)逻辑有关,很多时候,也将业务逻辑层称为领域层。例如Martin Fowler在《Patterns of Enterprise Application Architecture》一书中,将整个架构分为三个主要的层:表示层、领域层和数据源层。作为领域驱动设计的先驱Eric Evans,对业务逻辑层作了更细致地划分,细分为应用层与领域层,通过分层进一步将领域逻辑与领域逻辑的解决方案分离。   业务层在体系架构中的位置很关键,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。由于层是一种弱耦合结构,层与层之间的依赖是向下的,底层对于上层而言是“无知”的,改变上层的设计对于其调用的底层而言没有任何影响。如果在分层设计时,遵循了面向接口设计的思想,那么这种向下的依赖也应该是一种弱依赖关系。因而在不改变接口定义的前提下,理想的分层式架构,应该是一个支持可抽取、可替换的“抽屉”式架构。正因为如此,业务层的设计对于一个支持可扩展的架构尤为关键,因为它扮演了两个不同的角色。对于数据访问层而言,它是调用者;对于表示层而言,它却是被调用者。依赖与被依赖的关系都纠结在业务层上,如何实现依赖关系的解耦,则是除了实现业务逻辑之外留给设计师的任务。

持久层(DAO):

持久层,有时候也称为是数据访问层,其功能主要是负责数据库的访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。采用DAO模式,建立实体类和数据库表映射(ORM映射)。简单的说法就是实现对数据表的select、insert、update以及delete的操作。如果要加入ORM的元素,那么就会包括对象和数据表之间的mapping,以及对象实体的持久化。

三层与MVC的区别:

很多人容易把三层模式与MVC模式混淆,三层与MVC的最不同的地方在于三层是没有Controller控制器的概念。虽然同样是架构级别的,三层与MVC相同的地方在于他们都有一个表现层,但是他们不同的地方在于其他的两个层。MVC没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。当然了,在三层中也提到了Model概念,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层” 中典型的Model层是以实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。

在三层中JSP与Servlet代码都属于表示层,业务逻辑层则是完成业务规则的实体类,数据访问层则是JDBC等代码,示意图:

三层架构把不同层的业务职责分离得更加彻底,逻辑层不包含一丁点的视图层代码,同样的数据层也不应该包含一丁点的逻辑层代码,因为如果包含了其他层的代码就不能做到完全解耦,依旧存在一定程度的耦合性。

三层架构更好的实现了模块化编程,使用三层架构设计的系统更容易扩展、更换,特别是如今不止pc端一种设备,如果没做好分层就无法适应多设备的访问。例如表示层我们使用jsp+Servlet做的,面向的是web,如果哪天不做web了,要把整个表示层更换成桌面的图形化来显示,那么使用了三层架构的话,只需要更换表示层即可,逻辑层和数据层都可以进行复用。如果没有进行分层的话,各个模块都耦合在一起就无法进行复用,只能重新再编写一个适应桌面的系统出来,这样就很耗时耗力了。

我们都知道WebService是一种跨编程语言和跨操作系统平台的远程调用技术,如果一个系统是使用三层架构进行设计的,那么逻辑层就可以通过WebService共享给其他不同语言编写的应用程序调用。

最近流行的微信小程序是通过https访问服务器的,它需要服务器返回json数据,那么我们就可以在视图层中的Servlet接收这个访问,处理完成后返回json数据。

三层开发模式的优缺点

优点:

1、开发人员可以只关注整个结构中的其中某一层;

2、可以很容易的用新的实现来替换原有层次的实现;

3、可以降低层与层之间的依赖;

4、有利于标准化;

5、利于各层逻辑的复用。

6、结构更加的明确

7、在后期维护的时候,极大地降低了维护成本和维护时间

缺点:

1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。

2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

比如,一家饭店添加了一样菜, 那个菜单(UI) , 厨师(BLL) , 采购(DAL) 都要进行相应的处理。

原文地址:https://www.cnblogs.com/qiu18359243869/p/12698118.html

时间: 2024-10-10 20:47:44

java三层架构的相关文章

【转载】 JAVA三层架构,持久层,业务层,表现层的理解

JAVA三层架构,持久层,业务层,表现层的理解 转载:http://blog.csdn.net/ljf_study/article/details/64443653 SSH: Struts(表示层)+Spring(业务层)+Hibernate(持久层) Struts: Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求. 在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发. (View:沿用JSP,HTTP,Form,Tag,Resourse : Co

java 三层架构与mvc模式的解释

三层架构是一种架构模式.分为: 持久层:完成内存数据和磁盘数据的转换,采用Dao模式,建立实体和数据库映射. 表--类 列--(数据库)属性 (ORM对象和关系的映射),主要目的是完成对象数据和关系数据转换 业务层:主要完成业务处理操作,采用事务脚本模式,将一个业务中所有的操作封装成一个方法,保证该方法中,所有的数据库操作,同时成功或者同时失败. 表现层:完成数据的展示和流程的控制,采用 MVC模式. 三层架构与MVC的关系: 表现层 ———–>mvc框架 业务层 ———–>service层

请问JAVA三层架构,持久层,业务层,表现层,都该怎么理解?和MVC三层模型有什么区别

持久层用来固化数据,如常说的DAO层,操作数据库将数据入库业务层用来实现整体的业务逻辑 如 前台获得了数据,逻辑层去解析这些数据,效验这些数据等操作表现层很好解释  你现在看到的网页 一些界面 都属于表现层的东西可以用一些Html,jsp,Swing来实现至于mvc么对应的是 model(模型) view(视图) Controller(控制)在javaweb中就很好理解了再XX系统中,前台页面属于view 贯穿前台后台持久层的一套模型就是model(EJB,Spring来实现)  而连接前台后台

SSH框架整合实现Java三层架构实例(一)

HTML前台发送请求代码: 1 <tr> 2 <td>选择收派时间</td> 3 <td> 4 <input type="text" name="takeTimeId" class="easyui-combobox" required="true" 5 data-options="url:'../../taketime_findAll.action', 6 val

Java Web 三层架构详解

java 三层架构ssh 一个spring2.5+hibernate3.2+struts2.0组合框架,使用spring的 IoC来管理应用的 所有bean,包括struts2的 action,充分发挥了spring轻量级框架的 优势.  摘 要: 针对当前Web应用程序开发面临的问题,结合目前比较流行的开源框架Spring.Struts和hibernate,提出了一种开发J2EE Web应用的轻量级解决方案,以帮助开发人员在短期内搭建结构清晰.可复用性好.维护方便的Web应用程序.并且,通过案

用java观察者模式解耦经典三层架构

三层架构是一个很经典的架构模式,依据系统的职责不同.将系统分成了表现层,逻辑层和数据訪问层,而且配合数据实体进行传输数据,能够大大的封装性和复用性. 经典的三层架构图: 我们再深入到架构图内部.看看详细的类图,用简单的登陆举例吧: 这里通过LoginUI.调用了LoginLogService和LoginVerificationService两个类.通过类图能够看得出,U层和Service层(本文把BLL层称为了Service层)直接採用了直接调用的方式. 在面向对象的设计中.一直强调要面向接口编

JAVA集锦(三)--Model1、Model2、三层架构的华丽转变

JAVA,对Model1.Model2两个架构的掌握是必不可少的.下面我们一起见证一下从Model1到Model2(MVC)再 到典型三层架构的华丽转变过程. Model1架构 简单来讲,Model1是以JSP为核心实现的.jsp页面独自响应客户端请求并将处理结果返回给客户,在JSP页面 中结合了业务逻辑.服务端处理过程和HTML等,这样就在JSP页面中同时实现了业务逻辑和流程控制从而快速开 发. 优点 架构简单,  开发速度快,适合小型项目开发. 缺点 JSP职责过重,违反了职责单一原则 JS

【Java架构学习】MVC和三层架构的区别

其实这篇博客的重点不是介绍三层架构,是重点介绍MVC并帮助理解MVC.学了这么久MVC发现对它的理解还存在很多误区,今天就来好好整理一下MVC. MVC即Model-View-Controller,其中M-V-C各代表什么,我想即使我不一一列举大家也都了然于胸了.因为太熟悉了,就像我们当初学习三层架构一样,时间长了U-B-D各代表什么含义信手拈来.但是我想说的是,我们是否对MVC的认识也只是停留在表面? 哎呀,还是说一下吧,不说心里难受.总所周知,在MVC中,代表的具体含义如下: M--Mode

MVC三层架构模式编程思想 JSP-Servlet-JavaBean

MVC(Mdodel-View-Controller)编程模式,把一个Java应用分成三层:模型层.视图层.控制层,各层分别实现各层的功能,整个过程见下图就一目了然了. JSP.JavaBean.Servlet三层架构即MVC编程模式是现在我们学习web应用编程的基础思想,上图是经本人总结后做出的图,有不对的地方望各位朋友多提意见.