基础设施与角色全图

三大系统类型(入口/通信/业务)之外,还有基础设施——平台能力(文件/网络/内存/系统 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 都是入口形态),组装也可以下放——子系统组装自己的下属、组件初始化自己。识别角色、明确边界、按角色设计——这就是系统角色组成的全部。