基础设施与角色全图
三大系统类型(入口/通信/业务)之外,还有基础设施——平台能力(文件/网络/内存/系统 API)。完整看,程序由四类角色组成:入口、通信、业务、基础设施,外加一个组装者(入口:main / Server / Application)。这一篇补上基础设施,画出角色全图。
一、基础设施:第四类角色
基础设施提供平台能力,被其他角色调用:
1 2 3 4 5 6 7
| 基础设施 ├── 文件系统 read / write / open ├── 网络 socket / connect / send / recv ├── 内存 分配 / 映射 / 释放 ├── 进程/线程 create / join / 同步 ├── 平台 API Win32 / Linux / 系统调用 └── 第三方库 加密 / 压缩 / 图形
|
它与三大系统类型的区别:
1 2 3 4
| 入口系统:输入 → 调用(面向用户) 通信系统:通信 → 消息(面向网络) 业务系统:问题 → 解决(面向业务) 基础设施:能力 → 提供(面向平台)
|
基础设施是「能力的提供者」——不面向用户、不面向网络、不面向业务,只提供底层能力。
二、基础设施的数据与算法
基础设施不只是「代码」,也有自己的数据、算法、接口(对应数据结构三层分类):
1 2 3 4
| Data ├── Domain 业务对象(ProcessInfo / Breakpoint) ├── Core 通用结构(Vector / HashMap / RingBuffer) └── Infrastructure 平台数据(SocketContext / PEHeader / ThreadContext)
|
1 2 3 4
| 算法 ├── Domain Algorithm 业务算法(内存扫描 / 断点管理) ├── Core Algorithm 通用算法(排序 / 搜索 / 图算法) └── Infrastructure Algorithm 平台算法(PE 解析 / 协议解析)
|
三、角色全图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 程序 │ 入口(组装者:main/Server/Application) │ ┌─────────────┼─────────────┐ ↓ ↓ ↓ 入口系统 通信系统 业务系统 │ │ │ CLI/GUI Network Service Server Protocol Domain Session Algorithm Codec Data └─────────────┼─────────────┘ ↓ 基础设施 (文件/网络/内存/平台)
|
依赖方向:
1 2 3 4
| main → 入口/通信/业务 → 基础设施
✅ 上层调用下层 ❌ 基础设施不反向依赖业务
|
四、每个角色的组织方式不同
1 2 3 4
| 入口系统 按输入组织:命令 / 页面 / 请求 通信系统 按组件组织:EventLoop / Connection / Protocol 业务系统 按模块组织:Service / Domain / Algorithm 基础设施 按能力组织:文件 / 网络 / 内存 / 平台
|
1 2 3 4
| 入口 = 交互形态(用户怎么用) 通信 = 通信形态(字节怎么收发) 业务 = 问题形态(问题怎么解决) 基础设施 = 能力形态(平台提供什么)
|
五、角色可以省略
不是所有程序都需要全部角色:
1 2 3 4 5
| 纯 CLI 工具:入口 + 业务 + 基础设施(无通信) 纯库:业务 + 基础设施(无入口、无通信) 单机游戏:入口(可能无)+ 业务 + 基础设施 网络客户端:入口 + 通信 + 基础设施(无业务,业务在服务器端) 网络服务器:入口 + 通信 + 业务 + 基础设施(全)
|
系统设计决定后面走哪条路线,也决定需要哪些角色。 角色不是越多越好,是实际需要才有。
六、和其他内容的关系
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 角色全图 ←→ 从指令到系统/03 03 的三系统协作 = 本图在通信程序上的实例
角色全图 ←→ 服务器 服务器 = 入口 + 业务 + 网络 + 基础设施的完整装配
角色全图 ←→ 数据结构(三层分类) 基础设施的数据/算法/接口 = 数据结构三层分类
角色全图 ←→ 拆解与组织 角色全图是「拆解与组织」在系统层的组织结果
角色全图 ←→ 系统角色主题 05 是主题的总图:补齐基础设施,画出完整角色
|
收束
1 2 3 4 5 6 7 8 9 10 11 12
| 程序 = 四类角色 + 一个组装者: 入口(输入→调用)/ 通信(通信→消息) 业务(问题→解决)/ 基础设施(能力→提供) 入口(组装者,连接所有角色;main/Server/Application 都是入口形态)
依赖方向:main → 入口/通信/业务 → 基础设施
组织方式不同:入口按交互,通信按组件,业务按模块,基础设施按能力
角色可省略:纯 CLI 无通信,纯库无入口
系统设计决定需要哪些角色
|
完整看,程序由入口、通信、业务、基础设施四类角色组成,由入口组装。 入口是顶层的组装者(main / Server / Application 都是入口形态),组装也可以下放——子系统组装自己的下属、组件初始化自己。识别角色、明确边界、按角色设计——这就是系统角色组成的全部。