分层思维:为什么要做代码分层架构?

·  阅读 33

「这是我参与11月更文挑战的第21天,活动详情查看:2021最后一次更文挑战

功能性需求: 一个程序能为用户做些什么,比如,文件上传、查询数据等。 非功能性需求: 指除功能性需求以外的其他必要需求,比如,性能、安全性、容错与恢复、本地化、国际化等。

软件架构就是软件的基本结构 包括三要素:代码、代码之间的关系和两者各自的属性。

最经典的软件架构是分层架构---将软件系统进行分层。

从架构角度来聊聊什么代码要做分层、主要用于解决什么问题,以及存在优势和劣势有哪些?

客户端层(Client):调用方,比如浏览器或APP

应用服务层的网页服务器(Web Server):实现程序的运行逻辑,并从下层获取数据,返回给上层的客户端层

应用服务层的缓存(Cache);加速访问存储的数据

数据层(DB): 存储数据

把变化控制在一个层里。

截屏2021-11-18 下午3.30.48.png

代码 分层架构 是将软件 元素(代码)按照层(代码关系)的方式组织起来的一种结构。

截屏2021-11-18 下午3.32.05.png

分层架构核心的原则:

当请求或数据以外部传递过来后,必须是从上一层传递给下一层。

截屏2021-11-18 下午3.32.27.png

代码分层框架解决什么问题?

如何快速拆解功能问题?

如何提升代码的可扩展性?

通过分层来拆解问题:

  1. 分层架构可以将复杂的逻辑分为多个层。

  2. 分层架构让我们更容易做服务的横向扩展。

横向扩展 ---- 用多台配置较低的服务共同提供服务也就是集群部署服务方式

只用关注整个结构中的其中某一层的具体实现。

降低层与层之间的依赖

很容易用新的实现来替换原有层次的实现。

有利于标准化的统一

各层逻辑方便复用。

代码分层结构的优势:

不使用分层架构,代码逻辑会紧紧依赖在一起,修改某一处必定影响其他很多处。

层与层之间进行划分后,也提高了组件之间的复用性。

复杂的设计概念和简单的代码之间存在一种平衡,这就是分层架构。

  1. 代码分层架构设计的思维模型是简化思维,本质是抽象与拆解。

  2. 代码分层架构设计的目的是将复杂问题拆分为更容易解决的小问题,降低实现难度。

  3. 代码分层架构设计的原则和方法是通用方法,可以应用到其他需要分层设计的地方。

分类:
后端
标签: