
❝沉淀、分享、成长,让自己和他人都能有所收获!😜❞
定义接口、创建方法、调用展示,其实编程写代码说到底也就这3步,人人都是程序员👨🏻💻。公司老板都觉得,它有个AI工具,它都能写代码。 但现在的系统工程的分层结构,可不只是一层就写个 Controller,甚至是3层(Model-View-Controller),也有可能是4层(DDD)架构。这样的分层架构怎么理解呢?
刚入行,直接就开大吗?
在我最早接触编程的时候,还是9大内置对象,servlet、jsp、前端也是刚接触《锋利的JQuery》的时代。甚至很多流程代码都堆到了 jsp 页面,后端也就是连库做 CRUD 操作。多好的时代,学一点东西,就能上班赚钱了。现在要学的可就多了,仅专业技能部分,都能在写满简历 1/3 篇幅了!
但没办法,人嘛,总是要向钱低头的,向前!毕竟,互联网公司都是飞速迭代发展的,所以,要想混个能在群里喊【收到、收到】的资格,也得加倍学习。
所以,小傅哥就给大家分享下,关于系统分层架构的演进过程,看看这东西是怎么从简简单单变得复复杂杂的。
单层架构并不算一个规范的架构定义,只是在早期 MVC 三层架构(模型、试图、控制器)还没有那么普及,以及国内开发的项目程序还没有那么规范的时候,用于快速搭建简单网页功能的一种设计。

所有的分层结构的设计,都是以承接功能实现诉求为目的,这一阶段仅仅是完成网页的数据展示,也几乎没有用户交互。所以,很多时候是有多少个页面,就有多少个 Controller 提供接口,以及编写好调用数据库查询数据的操作。
1978年,MVC模式最早由 Trygve Reenskaug 提出,MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式透过对复杂度的简化,使程序结构更加直观。

3层架构出现的很早,其实本身的设计没有考虑复杂的分布式场景。在从三层架构演变到可以支持分布式架构的时候,是没有一个统一的标准规范的,更多的各个公司里自己直接从旧工程里添加了新的 module 分层模块。

DDD 是思想,六边形/菱形/整洁架构是分层,DDD 通过建模思想,指导我们以从用例图(use case diagram)出发,与产品、研发、测试一起在一个规范下,脑暴建模。在这个过程中,以结果为导向,分析出可能存在的领域服务。这些领域服务,如登录完成,下单完成,支付完成,收货完成,根据结果态,分析支撑这样的服务所需的对象(实体)、流程、规则等。这样我们可以更加清晰的构建一套系统。
而,六边形(常用的)架构,则是用于承接 DDD 领域驱动设计对系统分析后的编码实现。六边形可以说是专门为 DDD 做的配套架构,虽然也可以用 MVC 来编写,但这样是会失去面向对象设计和编码的优势,让代码逻辑混乱在一起。所以,这也是各个互联网公司开始往 DDD 架构切换的目的。这件事,我已经干了好几年了!

综上,就是关于架构分层的一个演进过程,现在还有 AI 的加入,AI 也会逐步成为整个工程架构中的一块。关于这部分的架构设计,与业务工程的结合,小傅哥也会在 bugstack.cn 博客中陆续更新。