Spring笔记04 应用分层
coconutnut

三层架构 (3-Tier Architecture)

  • 表示层 (PL, Presentation Layer 或 UI, User Interface Layer) —— 主要是与用户交互的界面,用于接收用户输入的数据和显示处理后的数据
  • 业务逻辑层 (BLL, Business Logic Layer) —— PL与DAL之间的桥梁,实现业务逻辑,主要包括验证、计算、规则等
  • 数据访问层 (DAL, Data Access Layer) —— 与数据库交互,实现对数据的CURD,将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库

MVC模式 (Model-View-Controller)

描述1:

  • 模型 (Model) —— 程序需要操作的数据或信息
  • 视图 (View) —— 提供给用户的操作界面,是程序的外壳
  • 控制器 (Controller) —— 负责根据用户从”视图层”输入的指令,选取”数据层”中的数据,然后对其进行相应的操作,产生最终结果

描述2:

  • 模型 (Model) —— 表示应用程序和任何应由其执行的业务逻辑或操作的状态
  • 视图 (View) —— 负责通过用户界面展示内容
  • 控制器 (Controller) —— 是处理用户交互、使用模型并最终选择要呈现的视图的组件

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

1. 关注点

  • 三层架构是为了解决整个应用程序中各个业务操作过程中的==不同阶段的代码封装==问题,使程序员更加专注的处理某阶段的业务逻辑
  • MVC架构模式将应用程序分为三个主要组成部分,有助于实现关注点分离。分离关注点是开发时的指导原则,此原则主张应根据==软件执行的工作类型==将软件分离

    2. 切分方向

  • 三层架构是一种软件抽象的层次结构,是对复杂系统的一种纵向切分
  • MVC更像是横向切分,每块都可以独立测试

    3. 依赖关系

  • 三层架构中,层次之间一般是向下依赖的。下层在未确定接口(契约)规范前,上层代码无法开发,下层代码接口的变化将使上层一起变化
  • MVC中,三者并不存在明显的层次结构,没有明显的向下依赖的关系。相反的是View和Model往往是比较独立的,而Controller则是两者的桥梁

都是为了解耦


MVC、MVP、MVVM

MVC,MVP 和 MVVM 的图示


阿里规范

《Java开发手册》v1.5.0 华山版

图中默认上层依赖于下层,箭头关系表示可直接依赖,如:开放接口层可以依赖于 Web 层,也可以直接依赖于 Service 层,依此类推:

  • 开放接口层 : 可直接封装 Service 方法暴露成 RPC 接口;通过 Web 封装成 http 接口;进行网关安全控制、流量控制等。
  • 终端显示层 : 各个端的模板渲染并执行显示的层。当前主要是 velocity 渲染,JS 渲染,JSP 渲染,移动端展示等。
  • Web层 : 主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。
  • Service层 : 相对具体的业务逻辑服务层。
  • Manager层 : 通用业务处理层,它有如下特征:
  1. 对第三方平台封装的层,预处理返回结果及转化异常信息。
  2. 对 Service 层通用能力的下沉,如缓存方案、中间件通用处理。
  3. 与 DAO 层交互,对多个 DAO 的组合复用。
  • DAO层 : 数据访问层,与底层 MySQL、Oracle、Hbase 等进行数据交互。
  • 外部接口或第三方平台 : 包括其它部门 RPC 开放接口,基础平台,其它公司的 HTTP 接口。

ref:
谈谈MVC模式
ASP.NET MVC与三层架构
ASP.NET Core MVC 概述
体系结构原则