06 - 2 分层架构模式(Layered Arch)
层
层的定义
- 层:软件的逻辑单元
- 每一层都有特定的功能
- 组件被分配到不同的层
何谓分层
- 将系统按照职责拆分和组织
- 上层依赖于直接下层
- 下层不可以依赖于上层
- 不可以跃层访问(理想状况)
经典分层架构
OSI 7 层架构
CS
- 两层架构
- Client:运行于Desktop的Native富客户端
- Server:应用服务、业务逻辑和数据存储
- 通过网络交换信息
BS
- 两层架构
- Browser:运行于各种浏览器的瘦客户端
- Server:应用服务、业务逻辑和数据存储
- 通过网络交换信息
企业应用三层架构
- Presentation:与用户交互和呈现信息
- Domain:业务逻辑
- Data:数据存储
缘何分层
Conway’s Law
- 设计系统的架构受制于产生这些设计的组织的沟通结构
复杂度隔离
- 隔离业务复杂度和技术复杂度
- 解决不同层的问题可以采用不同的技术栈
- 每层变化速度不一致
防止错误传播
- 降低错误影响
- 防水仓设计
层自治
- 本层功能内聚
- 自主决策
- 只有本层的知识
- 知道的越少,泄密的可能性越少
- 对外界的依赖少,受影响的可能性小
分层架构的优缺点
优点
高内聚
- 每一层的任何变化最多影响自身和上一层
- 专注自身功能,其它层的影响被屏蔽
- Single Responsibility
低耦合
- 每一层只依赖于下一层
- 单向依赖
- 通过接口交流
易扩展
- 功能扩展,仅影响本层
- 内聚性,易于横向扩展
- 独立性,易于纵向扩展
可维护性好
- 分工合作,开发者关注点集中
- 每一层可以依据接口并行开发
- 每一层功能单一,代码易于理解
可测试性好
- 每层对外提供固定的接口,可以直接测试接口
- 分层测试
- Spring Boot
- @DataJpaTest
- @WebMvcTest
缺点
- 性能下降
- 分层必定引入新的通信开销
- 层信息不能泄露,导致每层都有数据转化发生
- 不能跨层访问,增加调用链路
- 开发成本上升
- Full Stack少,且难以培养
- 跨组织沟通成本
- 任何变更可能都需要多层的参与
如何设计分层架构
依赖规则
- 越往外越具体,越朝内越抽象
- 外圈是软件,内圈是规则
- 依赖关系只能从外向内
定义职责
- 高层表示规则,底层实现细节
- 逻辑内聚自治分区
- 依据组织职责分工
定义技术栈
- 根据每层的需求各自选定
- 借鉴成功案例
- 部署方式
代码抽象与分层
- 层对外暴露的接口,隐藏实现细节
- 实现依赖于抽象,抽象不可依赖于实现细节
- 代码不跨层调用,只依赖于直接的下一层
集成
- 集成前做单元测试
- 根据接口和技术栈确定集成方式
- 集成联调
案例解析
MVC
- Model:Domain model和业务逻辑
- View:展示数据和用户交互
- Controller:
- 接收输入并转化为对model的操作
- 将model转化为view能展示的数据
MVP
- MVC的派生变种
- View通过Presenter获得数据而非Model
- Presenter层充当了桥梁,双向绑定
MVVM
- Model 层除了自身也包含部分Controller功能
- ViewModel:View的模型、映射、显示逻辑和绑定器
- View:将ViewModel展示在特定界面
06 - 2 分层架构模式(Layered Arch)相关推荐
- spring mvc返回页面显示空白_Spring 框架基础(06):Mvc架构模式简介,执行流程详解...
一.SpringMvc框架简介 1.Mvc设计理念 MVC是一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个组件里面,在改进和个性化定制界面及用户交互的同时,不 ...
- Spring 框架基础(06):Mvc架构模式简介,执行流程详解
本文源码:GitHub·点这里 || GitEE·点这里 一.SpringMvc框架简介 1.Mvc设计理念 MVC是一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集 ...
- .net mvc actionresult 返回字符串_Spring 框架基础(06):Mvc架构模式简介,执行流程详解
一.SpringMvc框架简介 1.Mvc设计理念 MVC是一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个组件里面,在改进和个性化定制界面及用户交互的同时,不 ...
- 再理下系统分层架构模式
MVC是横向分工:三层架构,是纵向分层. 在大多数架构图中,MVC被画成三角形,View是使用者能够看到并操作的层(可能是Web页面,也可能是GUI),Controller是处理各种操作请求的核心,M ...
- 软件体系架构模式之二分层体系结构
分层体系结构模式是n层模式,其中组件被组织在水平层中.这是设计大多数软件的传统方法,并且具有独立性.这意味着所有组件都是互连的,但彼此之间不依赖. 图1:分层架构 在此体系结构中有四层,其中每一层在模 ...
- 这 3 种 DDD 分层架构的模式,你掌握了么?
- 前言 - 在讨论DDD分层架构的模式之前,我们先一起回顾一下DDD和分层架构的相关知识. - DDD 的基本概念 - DDD(Domain DrivenDesign, ...
- DDD分层架构的三种模式
本文来说下DDD分层架构的三种模式 文章目录 概述 DDD 分层架构 模式一:四层架构 模式二:五层架构 模式三:六边形架构 本文小结 概述 在讨论DDD分层架构的模式之前,我们先一起回顾一下DDD和 ...
- 软件架构模式 mark Richards - 读后总结 1 - 分层架构
软件架构模式 Mark Richards 著 版权归 © 2015 O'Reilly Media, Inc. 所有. 原书发布链接为 Software Architecture Patterns [ ...
- 还在搞三层架构?了解下 DDD 分层架构的三种模式吧 !
来源:jianshu.com/p/a775836c7e25 引言 在讨论DDD分层架构的模式之前,我们先一起回顾一下DDD和分层架构的相关知识. DDD DDD(Domain DrivenDesign ...
最新文章
- 如何识别AWARD的BIOS-ID
- 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第1章-多智能体系统一致性问题概述
- jQuery图片翻转弹出动画特效
- 你在做大数据?你有目标么?
- Oracle学习(十五)PLSQL安装
- 腾讯看点投放系统介绍:推荐系统的进化伙伴
- 数字调色盘【RGB和16位】
- kail linux更新源、挂载
- 云计算实战系列-磁盘阵列
- codeforces 360B
- 一个封锁操作被对 wsacancelblockingcall 的调用中断_备战秋招——操作系统(3)
- 小米6X反复自动重启停不下,取下卡槽、电源音量-,ok了
- Steven N.S.Cheung之婚姻合约文章简评
- littleVGL学习笔记9——lv_btn 按钮
- html没有注册类,电脑提示没有注册类别的解决方法大全
- Centos7服务器网络配置
- 超超经典语录200条、看的我心拔凉拔凉的、我真的hold
- 突发!顶尖大学教授跑步后洗澡晕倒猝逝,年仅53岁
- 二见钟情之ComboBox显示查询结果集
- 元宇宙黑马来袭 海姆达尔Heimdallr 开启链游新玩法
热门文章
- Linux文件目录结构详解
- 第六十五集 Squid缓存代理服务(p≧w≦q)
- 关于最新笔记本机型预装win8如何更换为win7的解决办法
- 微信养号服务器,微信30天养号技巧(附养号操作图)
- 什么颜色对眼睛最好?
- Java提取游戏_GALGAME 剧本提取工具
- csv格式文件如何转换成excel文件
- 经纬度与WGS84坐标转换
- 500个爆文标题_看了1000个爆文标题,终于发现了这个规律.......
- 阿基米德螺旋公式的再认识