MVC框架

介绍:

  • MVC全名Model View Controller

    • Model:模型的意思,代表业务模型
    • View:视图的意思,代表用户界面
    • Controller:控制器的意思,控制器接受用户的输入并调用模型和视图去完成用户的需求。
  • MVC把各个层次需要关注的内容分离了开来。
    • MVC将负责显示数据的层次称为视图。View视图主要负责向用户显示数据。它负责与用户交互。
    • 视图负责与用户进行交互,用户可以在视图中进行数据交互,视图中接收到数据之后,控制器负责封装数据,根据业务来调用不同的业务模型去处理;模型接受到控制器发来的数据后,处理业务。

例子阐述:

  1. 用户在web页面中输入了账户和密码来进行余额查询操作(View)
  2. 视图封装数据传递给控制器,控制器识别出这是一个“查询余额”的业务请求。(View->Controller)
  3. 控制器识别出这是一个“查询余额”的业务请求之后,控制器继续封装数据,调用“查询余额”的业务模型来处理(Controller->Model)
  4. 业务模型接受到控制器传来的数据,进行数据库交互,查出余额,返回结果给视图(Model通常会把数据封装到对象当中),视图将业务模型返回过来的数据显示出来。(Model->View)【这里有时候需要更改视图的界面,比如你点击查所有用户,会跳转到一个新视图用来显示用户列表。这里的视图改变依赖于视图解析器 ,视图解析器会根据结果来进行不同的视图选择,有时候这个结果是模型给的(动态页面),有时候是控制器给的(静态页面)。】

注意:

  • 视图虽然是一个“交互界面”,但它很多时候都是基于对象模型来创建的,比如一个注册界面,很多时候注册页面的文本框的name属性都要与业务模型中的数据进行对应,这样可以很轻易地将数据封装起来。

三层结构:

介绍:

应用程序架构可以分为三个层次:表现层、业务层、持久层。

  • 表现层:(顶层)表现层负责用户界面的显示,并且负责帮助用户向业务层提交业务逻辑处理请求,通常还负责将业务层发来的处理结果显示到界面中。
  • 业务层:(中间层)业务层负责处理业务逻辑,它可以根据不同的业务来调用不同的代码来处理。
  • 持久层:(底层)持久层负责向一个或多个数据库中读取或写入数据。通常用来给业务层的业务逻辑处理提供数据。这个层次通常必须包括业务实体模型。

例子阐述:

以一个例子来谈三个层次的作用:

  • 用户访问了某个网站的页面,这个页面上有各种各样的功能(如果只是静态的页面的话,还不算表现层)
  • 用户点击某个按钮,向服务器提交请求(表现层->业务层)
  • 服务器接收到请求,分析请求,调用对应的逻辑处理程序来处理请求(业务层)
  • 如果用户发起的业务请求是一个与数据库相关的业务,对应的逻辑处理程序调用数据库交互逻辑来读取/写入数据(业务层->持久层)
  • 数据库交互逻辑通过程序的配置信息来与数据库进行交互,读取/写入数据后,返回结果。(持久层->业务层)【如果这个数据库交互逻辑处于某个业务处理逻辑当中,那么这时候就不算持久层,每个层次的功能都是独立的。】
  • 业务逻辑处理程序接收到数据库交互逻辑程序返回的数据,进行数据处理,然后返回到用户的界面上。(业务层->表现层)
  • 服务器根据请求将数据显示到网页中,然后将这个网页返回给用户浏览器。(表现层)

注意:

  • 每个层次的职能应该是独立的,否则无法独立成一个层次。

  • 通常来说,表现层不应该存在业务逻辑处理的代码,它通常只用来显示动态数据。


MVC与三层架构的区别

  • MVC与三层架构并不等同,三层架构的三个层次并不与MVC对应
  • 如果要MVC与三层架构做对比的话,MVC就像一个中间件,它囊括了三层架构中业务层的大部分功能,但也涉及表现层(View视图负责数据的显示)和持久层(持久层中的实体类与Model模型,但Model比实体类要多出数据库交互的功能)
  • MVC中Model基本相当于业务层+持久层

MVC框架与三层架构的更多相关文章

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

    之前总是混淆MVC表现模式和三层架构模式,为此记录下. 三层架构和MVC是有明显区别的,MVC应该是展现模式(三个加起来以后才是三层架构中的UI层) 三层架构(3-tier application) ...

  2. 浅析MVC模式与三层架构的区别

    浅析MVC模式与三层架构的区别 三层架构和MVC是有明显区别的,MVC应该是表现模式(三个加起来以后才是三层架构中的UI层).三层架构(3-tier application) 通常意义上的三层架构就是 ...

  3. MVC和普通三层架构的区别

    MVC和普通三层架构的区别 其中这里的模型(Model)和视图(View )是完全区别于三层架构中的模型(Model)和视图(View)的. MVC 1)MVC中的模型(Model)指的是数据模型,用 ...

  4. 浅析MVC模式与三层架构的区别01

    三层架构和MVC是有明显区别的,MVC应该是展现模式(三个加起来以后才是三层架构中的UI层)三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI ...

  5. MVC设计模式与三层架构

    三层架构分别是:表示层(Web层).业务逻辑层(BLL层)和数据访问层(DAL层). (1)表示层负责: a.从用户端收集信息 b.将用户信息发送到业务服务层做处理 c.从业务服务层接收处理结果 d. ...

  6. MVC简介与三层架构

    感谢博客园团队日夜辛苦的付出 感谢阅读我文章的每位读者 1.MVC简介 MVC最早于1978年提出,是软件工程中的一种软件架构模式,这时距离微软在1985年推出Window1.0还有7年之久,当时的M ...

  7. MVC模式与三层架构和表示层

    1.MVC模式     - Model-View-Controller     - 模型-视图-控制器     - Model(模型)         > 模型分为业务模型,和数据模型     ...

  8. MVC 设计模式与三层架构

    一.JavaEE开发模式 什么是开发模式 模式是在开发过程中总结出的"套路",总结出的一套约定俗成的设计模式 JavaEE模式 model1模式 技术组成 :jsp+javaBea ...

  9. 利用General框架进行三层架构开发

    三层架构是企业信息管理系统中一种比较流行的架构方式,如大家所知,三层架构将信息系统分为数据访问层(DAL).业务逻辑层(BLL).界面表示层(UI)三部分,三层架构的好处是根据系统中代码所处的层次将系 ...

随机推荐

  1. 【ABP框架系列学习】N层架构(3)

    目录 0.引言 1.DDD分层 2.ABP应用构架模型 客户端应用程序(Client Applications) 表现层(Presentation Layer) 分布式服务层(Distributed ...

  2. 使用 SonarQube 来分析 .NET Core 项目代码问题

    0.介绍 Sonar 是一款开源的代码分析工具,可能有很多人已经用过,本篇文章主要是讲解如何在 Docker 里面安装 Sonar 并且用其来分析 .Net Core 项目. Sonar 是一个用于代 ...

  3. Jenkins系列之六——拉取指定branch或tag

    一.安装插件 Build With Parameters Git Paramet 系统管理——>管理插件——>可选插件——>右上角过滤框中输入上面两个插件的名字——>直接安装 ...

  4. 使用 Kubeadm 安装部署 Kubernetes 1.12.1 集群

    手工搭建 Kubernetes 集群是一件很繁琐的事情,为了简化这些操作,就产生了很多安装配置工具,如 Kubeadm ,Kubespray,RKE 等组件,我最终选择了官方的 Kubeadm 主要是 ...

  5. Java 容器 & 泛型:六、容器讲到为什么要使用泛型

    Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket ArrayList是集合类中无处不在的,泛型也是,泛型对集合类尤其有用.但是为啥要使用泛型?理解好了这 ...

  6. leetcode — combination-sum-ii

    import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** *Source : https://oj ...

  7. 【原创】空中鼠标一DMP欧拉角

    正在搞六轴传感器,今天移植了MPU6050的MothionDriver的DMP固件到STM32上了,能够稳定地输出欧拉角(也就是俯仰角.航向角.横滚角)和XYZ三轴加速度值,在电脑的上位机模拟了装置的 ...

  8. Kubernetes 弹性伸缩全场景解析 (一)- 概念延伸与组件布局

    传统弹性伸缩的困境 弹性伸缩是Kubernetes中被大家关注的一大亮点,在讨论相关的组件和实现方案之前.首先想先给大家扩充下弹性伸缩的边界与定义,传统意义上来讲,弹性伸缩主要解决的问题是容量规划与实 ...

  9. Eclipse中Maven插件的使用技巧及原理

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6698699.html 题目有点大,这里只是自己对Maven插件的一些使用总结,可能会涉及到 ...

  10. MySQL中间件之ProxySQL(7):详述ProxySQL的路由规则

    返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.关于ProxySQL路由的简述 当ProxySQL收到前端app发 ...