Day 06 - MVC 与三层架构

在Web 开发中,MVC 与三层架构这两个名词会经常被人提及,很多人会将它们混为一谈,认为MVC 就是三层架构,而实际上它们是两个不同的概念,并不是说完全没有关系,它们存在差异但也有相似的地方,不过可以肯定的是,这两个架构都是为了降低系统物件关系间的耦合度而产生的。

MVC 架构

首先介绍MVC 架构,MVC 指的是Model(模型)、View(视图)、Controller(控制器)的简写,分别代表应用程序中三种不同职责的物件。

Model

代表存取资料的POJO,也可以带有业务逻辑,其作用是在记忆体中暂时储存资料,并在资料变化时更新控制器,若要持久化则需要将它写入资料库或档案中。

View

主要用来显示内容或提交数据。

Controller

主要用来处理用户的请求,它可以将用户请求转发给相应的Model 进行处理并根据Model 处理结果向用户提供相应的回应。

MVC 架构的工作流程

  1. 用户通过View 向Server 提交请求,可能是表单请求、超连结请求亦或是Ajax 请求等。
  2. Controller 接收到请求後进行解析,转发请求内容给相应的Model 进行处理。
  3. Model 处理完毕後,将结果返回给Controller。
  4. Controller 根据处理结果找到相应的View 页面,页面经渲染後再返回给用户。
    https://ithelp.ithome.com.tw/upload/images/20210921/20140728VsKmCXCzf4.png

三层架构

再来介绍三层架构,它就是将整个应用程序划分为表现层、业务逻辑层、数据存取层三个部分,各司其职不互相干扰,既解决耦合性,也增加了逻辑性、覆用性和可维护性。

表现层(Presentation Layer)

主要负责接收用户请求、转发请求、产生数据并返回结果。

业务逻辑层(Business Layer)

针对具体问题的操作,主要是从资料库中取得数据并对数据进行逻辑处理。

资料存取层(Data Access Layer)

也叫做持久层,主要负责对资料库的操作,针对数据的新增、删除、修改、查询。

三层架构的工作流程

表现层则只是与用户互动的一个功能,决定用户请求的处理方式并返回结果;业务逻辑层并没有使用SQL 语句对资料库进行操作,而只是透过资料存取层的接口存取资料库中的数据,并对数据进行逻辑上的处理。
https://ithelp.ithome.com.tw/upload/images/20210923/201407280ueusEaLfZ.png

总结

简单来说,三层架构的表现层是处理用户请求并返回结果,这对应到MVC 中的V 和C,所以MVC 中的V 和C 可以判断是属於三层架构的表现层;而MVC 中的M 可以对存取资料或是进行业务逻辑处理,这对应到三层架构的业务逻辑层和资料存取层,它们的关系就会如下图所示。
https://ithelp.ithome.com.tw/upload/images/20210921/20140728i1A4UsRM7O.png

参考网站

Web on Servlet Stack
Spring MVC与三层架构 - Heart.Think.Do


<<:  [Day 21] 闭包 (Closure)是什麽?

>>:  [FGL] 程序开发(3) - 输入用的INPUT系指令与DIALOG

(Day11) 物件参考特性

传值与传参考 物件传参考是 JS 中非常重要的特性,纯值和物件在赋值时的行为模式不同: 纯值在赋值时...

[Day 17] 阿嬷都看得懂的程序码编辑器与开源软件是什麽

阿嬷都看得懂的程序码编辑器与开源软件是什麽 我们终於写出了第一支 .html 与 .css 档案了,...

Day 15:如何解决 PowerShell 无法使用 Angular 指令的问题?

学习 Angular 的过程中,遇到了一些教学资源不见得会遇到的问题,还真是家常便饭,而且你个人电脑...

[Day 28] Gitea - 如何自签凭证与Nginx注意

Gitea Docker版本 绑定自签凭证by Nginx 当你的Gitea需要绑定SSL时有个快速...

Day9. functional programming in Ruby - Block Part2

初来乍到Ruby世界的读者们,绝对想不到原来Ruby 也有 curry, bind 等用法。这些语法...