JavaEE 三层架构与MVC的区别与联系

0:前言

最近在学习java,对JavaEE三层架构与MVC设计模式的关系与区别不太理解,在网上找了好多资料,整理如下文章。如有不对欢迎指出来,大家一起学习。

1:三层架构

三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。

1、表现层(User Interface layer):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
表现层的主流框架有:struts1 ,struts2,,springMVC,webwork
2、业务逻辑层(Business Logic Layer):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
业务逻辑层的主流框架有:Spring
3、数据访问层(Data access layer):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。
数据访问层测主流框架有:Hibernate,Ibatis,以及Ibatis的升级版Mybatis

J2EE体系结构图或三层结构图。如图1

JavaEE 三层架构与MVC的区别与联系

                                                                                                      图1

SSH体系图。如图2

JavaEE 三层架构与MVC的区别与联系

                                                                                         图2

2:MVC模式

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

3:三层架构 与MVC的联系

3.1 联系

MVC(模型Model-视图View-控制器Controller)是一种架构模式,可以用它来创建在域对象和UI表示层对象之间的区分。
同样是架构级别的,相同的地方在于他们都有一个名义上叫表现层【MVC里的V范围小于三层里表示层】,但是他们不同的地方在于其他的两个层。
在三层架构中没有定义Controller的概念。这是最不同的地方。而MVC也没有把业务的逻辑和数据库访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。当然了。在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是以实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。

3.2不同点

三层是从整个应用程序架构的角度来分的三层(如果程序需要,还可以分多层)。三层是为了解决整个应用程序中各个业务操作过程中不同阶段的代码封装的问题,为了使程序员更加专注的处理某阶段的业务逻辑。比如将数据库操作代码封装到一层中,提供一些方法根据参数直接返回用户需要的相应数据,这样在处理具体的业务逻辑的时候,就不用关心数据的存储问题了。

MVC是在应用程序(BS结构)的视图层划分出来的不同功能的几个模块。MVC主要是为了解决应用程序用户界面的样式替换问题,把展示数据的 HTML 页面尽可能的和业务代码分离。MVC把纯净的界面展示逻辑(用户界面)独立到一些文件中(Views),把一些和用户交互的程序逻辑(Controller)单独放在一些文件中,在 Views 和 Controller 中传递数据使用一些专门封装数据的实体对象【数据库实例】,这些对象再加上相关的业务逻辑和数据库访问,统称为Models。

只所以说MVC和三层毫无关系,是因为它们二者使用范围不同:三层可以应用于任何语言、任何技术的应用程序;而MVC只是为了解决BS应用程序视图层各部分的耦合关系。它们互不冲突,可以同时存在,也可根据情况使用其中一种。

3.3相同点

如果硬要给他们对应的话,那么三层架构中的UI【网页页面表示层包含:样式、数据、页面间跳转】对应MVC中的view+controller,都是用于显示以及获取界面的数据;三层架构中的BLL层和DAL层对应MVC中的Model(javabean)层都是用于处理上层传递来的数据以及从数据库获取的数据的;MVC中的Controller(Servlet)最多算是三层架构中的UI的一部分,也就我们常说的是Servlet。

如下图所示:图3

JavaEE 三层架构与MVC的区别与联系

                                                                                               图3

四:总结