11. MVC 模式与三层架构的区别

空~2022年8月29日
  • JavaWeb
大约 3 分钟

11. MVC 模式与三层架构的区别

MVC与三层架构 - 简书 (jianshu.com)open in new window

三层架构

三层架构是指:视图层 View、服务层 Service,与持久层 Dao。它们分别完成不同的功能。

View 层:用于接收用户提交请求的代码在这里编写。

Service 层:系统的业务逻辑主要在这里完成。

Dao 层:直接操作数据库的代码在这里编写。

为了更好的降低各层间的耦合度,在三层架构程序设计中,采用面向抽象编程。

即上层对下层的调用,是通过接口实现的。

而下层对上层的真正服务提供者,是下层接口的实现类。

服务标准(接口)是相同的,服务提供者(实现类)可以更换。

这就实现了层间解耦合。

img

MVC

MVC 是指:Model 模型、View 视图、Controller 控件器。

  • View:视图,为用户提供使用界面,与用户直接进行交互。

  • Model:模型,承载数据,并对用户提交请求进行计算的模块。其分为两类,一类称为数据承载 Bean,一类称为业务处理 Bean。所谓数据承载 Bean 是指实体类,专门承载业务数据的,如 Student、User 等。而业务处理 Bean 则是指 Service 或 Dao 对象,专门用于处理用户提交请求的。

  • Controller:控制器,用于将用户请求转发给相应的 Model 进行处理,并处理 Model 的计算结果向用户提供相应响应。

MVC 架构程序的工作流程是这样的:

  1. 用户通过 View 页面向服务端提出请求,可以是表单请求、超链接请求、AJAX 请求等。

  2. 服务端 Controller 控制器接收到请求后对请求进行解析,找到相应 的 Model 对用户请求进行处理。

  3. Model 处理后,将处理结果再交给 Controller。

  4. Controller 在接到处理结果后,根据处理结果找到要作为向客户端发回的响应 View 页面。页面经渲染(数据填充)后,再发送给客户端。

img

MVC 与三层架构的关系

三层架构中的 View 层简单的说就是跟用户发生直接关系的层,MVC 中的 V 和 C 就是这样的存在,所以 MVC 中的 V 和 C 均属于三层架构的 View 层。

同时,我们知道 MVC 中的 M(Model)包括了数据承载 Bean 和业务处理 Bean,其中业务处理 Bean 分为 Service 或 Dao 对象,分别对应业务逻辑处理和数据库操作,相应的,它们对应的是三层架构中的 Service 层和 Dao 层。

故,它们的关系如下图所示:

img

SSM 与三层架构的关系

SSM 即 SpringMVC、Spring、Mybatis 三个框架。它们在三层架构中所处的位置是不同的,即它们在三层架构中的功能各不相同,各司其职。

  • SpringMVC:作为 View 层的实现者,完成用户的请求接收功能。SpringMVC 的 Controller 作为整个应用的控制器,完成用户请求的转发及对用户的响应。

  • MyBatis:作为 Dao 层的实现者,完成对数据库的增、删、改、查功能。

  • Spring:以整个应用大管家的身份出现。整个应用中所有的 Bean 的生命周期行为,均由 Spring 来管理。即整个应用中所有对象的创建、初始化、销毁,及对象间关联关系的维护,均由 Spring 进行管理。

img