一、MVC 存在的痛点问题

对于业务逻辑不甚复杂的场景,MVC 尚能胜任。但随着前端 MVVM(Model-View-View-Model)开发模式的兴起,尤其是前端框架如 VueReact 的普及,服务端的 MVC 设计模式使用场景变得越来越少,因为已不再需要服务端渲染 View

此外,MVC 其实分层设计模式仍然粒度较粗:

  • Model 层级的代码既维护数据,也封装着业务逻辑,随着业务逻辑变得越来越复杂,这一层功能逻辑会变得越来越臃肿不易维护。
  • 对于团队管理来讲,ControllerModel职责边界比较模糊,对于开发人员写好代码的要求会比较高。

二、3-Tier Architecture(三层架构)

虽然有时 MVC 也被称为三层架构,但三层架构是有特定术语(3-Tier Architecture)的。

2.1 表示层 — UI

User Interface 位于三层构架的最上层,与用户直接接触,主要是 B/S 中的 WEB 页面,也可以是 API 接口。表示层的主要功能是实现系统数据的传入与输出,在此过程中不需要借助逻辑判断操作就可以将数据传送到 BLL 系统中进行数据处理,处理后会将处理结果反馈到表示层中。换句话说,表示层就是实现用户界面 / API 接口功能,将用户的需求传达和反馈,并用 BLL 或者是 Model 进行调试,保证用户体验。

2.2 业务逻辑层 — BLL

Business Logic Layer 的功能是对具体问题进行逻辑判断与执行操作,接收到表现层 UI 的用户指令后,会连接数据访问层 DAL,业务逻辑层在三层构架中位于表示层与数据层中间位置,同时也是表示层与数据层的桥梁,实现三层之间的数据连接和指令传达,可以对接收数据进行逻辑处理,实现数据的增删改查等功能,并将处理结果反馈到表示层 UI 中,实现软件功能。

2.3 数据访问层 — DAL

Data Access Layer 是数据库的主要操控系统,实现数据的增删改查等操作,并将操作结果反馈到业务逻辑层 BLL。在实际运行的过程中,数据访问层没有逻辑判断能力,为了实现代码编写的严谨性,提高代码阅读程度,一般软件开发人员会在该层中实现通用数据能力进行封装(例如通过 ORM 组件)来保证数据访问层 DAL 数据处理功能。

2.4 模型定义层 — Model

模型定义也常用 Entity 实体对象来表示,主要用于数据库表的映射对象,在信息系统软件实际开发的过程中,要建立对象实例,将关系数据库表采用对象实体化的方式表现出来,辅助软件开发中对各个系统功能的控制与操作执行。建立实体类库,进而实现各个结构层的参数传输,提高代码的阅读性。从本质上看,实体类库主要服务于表示层、业务逻辑层以及数据访问层,在三层之间进行数据参数传输,强化数据表示的简约性。

需要注意区分的是,这里的Model和MVC设计模式中的Model虽然都是一个名字但是差别巨大,职责完全不同。

从 MVC 架构到三层(3-Tier)架构相关推荐

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

    MVC模式与三层架构的区别 原文地址:http://www.cnblogs.com/yourshj/p/5197310.html 之前总是混淆MVC表现模式和三层架构模式,为此记录下. 三层架构和MV ...

  2. mvc设计模式与三层架构

    mvc与三层架构  1.什么是mvc设计模式 写Java Web项⽬时会发现,一个中型或者大型项目随着代码的增多,会发现:代码既可以写在src目录下,也可以写在WebContent目录下. src下可 ...

  3. MVC模式和三层架构

    MVC模式: MVC是一种分层开发的模型,其中: M:Model,业务模型,处理业务 V:View,视图,界面展示 C:Controller,控制器,处理请求,调用模型和视图 前端view后端cons ...

  4. 计算机网络汇聚层,31. 接入层 汇聚层 核心层 三层典型网络架构

    # 网络 网络.互联网络.企业级经典网络拓扑和家庭网络 # 互联网服务提供商 基于ISP和IXP的多层结构 # OSI 参考模型 程序员    :应用层.表示层.会话层.传输层 网络工程师:网络层和数 ...

  5. 架构-三层架构:三层架构

    概述 顾名思义,三层架构分为三层,分别是"数据访问层"."业务逻辑层"."表示层". 数据访问层:数据访问层在作业过程中访问数据系统中的文件 ...

  6. ddd架构 无法重构_漫谈分层架构:为什么要进行架构分层?

    为什么要分层 高内聚:分层的设计可以简化系统设计,让不同的层专注做某一模块的事 低耦合:层与层之间通过接口或API来交互,依赖方不用知道被依赖方的细节 复用:分层之后可以做到很高的复用 扩展性:分层架 ...

  7. 架构设计之如何写架构设计说明书

    架构设计是需求分析到软件实现的桥梁,也是决定软件质量的关键.编制架构设计说明书是开发人员向架构师转变必定会经历的过程.在架构师整个的成长过程中,必定会经历编制架构设计说明书.评审架构设计说明书以及根据 ...

  8. 【云驻共创】云原生应用架构之企业核心业务未来架构演进路线及华为云方案

    文章目录 前言 一.企业核心业务架构演进 1.企业核心业务应用架构和集成架构发展历程 1.1 企业核心业务应用架构发展历程 1.1.1 单体架构 1.1.1.1 特点 1.1.1.2 优点 1.1.1 ...

  9. 简述mvc和java三层框架,springMVC设计模式和javaWeb三层框架

    一.springMVC  设计模式 MVC模式是软件工程中的一种能够软件架构模式,把软件分为三个基本部分,模型(model).视图(view)和控制器(controller).使程序简化,更加直观. ...

  10. 中小型研发团队架构实践:微服务架构

    http://www.infoq.com/cn/articles/architecture-practice-06-microservice-architect 一.MSA 简介 1.1.MSA 是什 ...

最新文章

  1. gridView 多余字符显示省略号...
  2. WebMagic之爬虫监控
  3. min max rand repmat 函数
  4. 客户说有了PAI-AutoML,一下子可以节约半年开发周期
  5. eclipse打开当前文件所在文件夹
  6. php把时间戳转换成多少时间之前函数
  7. python使用random生成不重复的随机数
  8. 2019年,有远见的程序员都在关注这些硬核公众号
  9. 车牌识别:HyperLPR车牌识别代码解析
  10. C语言练习——数据加密
  11. 阿里云短信服务SDK使用方法
  12. 编写函数trans(str)实现字符串中数字转化为大写汉字。例如 “0123456789“转化为 “零壹贰叁肆伍陆柒捌玖“。
  13. MapReducer的map和reducer的几种写法模板以及自定义数据类型
  14. 华为第十届 关灯计划
  15. 人工智能架构图和产业链构成
  16. 大疆 —— 后端开发工程师(北京)
  17. 二进制及二进制的转换
  18. vue3-HTTP请求
  19. 梅科尔工作室苏慎臻,Django使用ORM增删改
  20. 谈谈第一次Web项目的感想(上)

热门文章

  1. 全排列+check检验
  2. Security:Okta
  3. 计算机阵列除法器原理,计算机组成原理原码阵列除法器.doc
  4. 让IjkPlayer支持插入自定义的GPU滤镜
  5. Linux安装JDK(全版本)
  6. window10的快捷键和触控板小技巧
  7. 刷机后IMIE丢失怎么办 高通手机IMEI备份恢复教程
  8. PHP编写主机内容过滤,Ecshop教程:通过修改过滤模板里的php代码,防止模板被挂马...
  9. 苏州大学机电工程学院院长孙立宁:医疗机器人的机遇、现状和未来
  10. 智慧社区养老解决方案——苏州新导智能