563 字
3 分钟
软件架构/框架/中间件/构件
复习
核心问题:
- 架构
- 框架
- 中间件
- 构件
Q&A
说出以上各概念的定义和差别
核心概念
| 概念 | 精确定义 | 例子 | 关键区分 |
|---|---|---|---|
| 软件架构 | 系统的高层结构设计:有哪些部分、各自职责、如何交互、用什么技术 | 前后端分离 + 微服务 + Redis 缓存 | 是蓝图,不是代码;决定”怎么搭” |
| 软件框架 | 半成品代码骨架,规定程序结构,框架调用你的代码,你填业务逻辑 | Spring Boot、Vue、Flask | 在你的进程内;控制反转(IoC) |
| 中间件 | 独立部署的公共服务软件,位于应用与系统/应用之间,提供通用能力 | Redis、Kafka、Nginx、Tomcat | 在你的进程外;通过网络调用 |
| 构件 | 可独立部署、有明确接口、可替换的软件单元 | 用户服务、支付服务、Redis、Nginx | 是部署单元;模块不是 |
| Spring 框架 | Java 后端框架,核心是 IOC 和 AOP | @Autowired、@Transactional | 用反射管理 Bean,用动态代理实现 AOP |
*最容易混淆的区分
1. 架构 vs 框架
- 架构 = 设计图:决定”房子几层、什么风格”
- 框架 = 预制钢架:决定”墙怎么砌、线怎么走”
- 例子:架构说”前后端分离”,框架用 Vue + Spring Boot 实现。
2. 框架 vs 库
- 库:你调用它(工具箱)
- 框架:它调用你(流水线)
- 例子:jQuery 是库,Vue 是框架。
3. 中间件 vs 框架/库
- 框架/库:嵌入你的应用进程
- 中间件:独立进程,独立部署
- 例子:Spring Boot 在你的进程里;Redis 是独立进程,你的程序通过网络连它。
4. 构件 vs 模块
- 模块:代码内的组织单位,不能独立部署,如
utils.py - 构件:可独立部署的软件单元,如”用户服务”
一句话总结模块是代码内的组织,构件是部署时的单元。
5. 构件 vs 中间件
- 中间件是一种提供通用能力的构件
- 构件更宽泛:服务、中间件、数据库都可叫构件
终极总结架构是蓝图,框架是骨架,中间件是水电煤,构件是积木。
Spring 用反射和动态代理,把骨架和积木组装起来。
软件架构/框架/中间件/构件
https://entropy.lighterever.com/posts/软件架构:框架:中间件:构件/