三大系统类型:入口 / 通信 / 业务
程序可以按角色分成三大系统类型:入口系统(把外部输入转换成系统调用)、通信系统(把外部通信转换成内部消息)、业务系统(真正完成程序要解决的问题)。三种角色职责完全不同,内部组织方式不同,设计路线也不同。这是系统角色组成的核心。
一、程序的三分结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 程序 │ ├── 入口系统 │ ├── CLI入口 │ ├── GUI入口 │ └── Server入口 │ ├── 通信系统 │ ├── 网络组件 │ ├── 传输组件 │ ├── 会话组件 │ ├── 协议组件 │ ├── 编解码组件 │ └── 通信调度组件 │ └── 业务系统 ├── Service 任务组织 ├── Domain 业务数据结构 └── Algorithm 业务算法
|
三种角色的职责:
1 2 3
| 入口系统:把外部输入转换成系统调用 通信系统:把外部通信转换成系统内部消息,并把结果转换回通信数据 业务系统:真正完成程序要解决的问题
|
二、入口系统 vs 业务系统:两种完全不同的东西
入口系统和业务系统是分开的。以 CLI 为例:
1 2 3 4 5
| CLI 入口系统 ├── 参数解析 ├── 命令解析 ├── 分发 └── 调用业务接口
|
以 GUI 为例:
1 2 3 4 5 6
| GUI 入口系统 ├── 控件交互(接受) ├── 用户流程(分发) ├── ViewModel / Controller(调用) ├── 状态同步(View ↔ ViewModel) └── 调用业务接口
|
入口系统关心「输入怎么进来、怎么找到功能」;业务系统关心「功能怎么完成」。 两者的组织方式完全不同——入口按交互组织,业务按模块组织。
三、三种角色的组织单位不同
1 2 3
| 入口系统 → 命令/页面/控件/交互(按输入组织) 通信系统 → 组件(EventLoop/Connection/Protocol/Codec) 业务系统 → 模块(数据 + 算法 + 接口)
|
「模块设计」和「组件设计」不是上下级关系,而是系统类型不同产生的两条设计路线。
1 2 3 4 5 6 7
| 业务系统:核心组织单位是模块 模块内部 = 原子接口 + 数据结构 + 算法 (不应硬塞一个「组件设计」进去)
通信系统:核心组织单位是组件 组件内部 = 数据 + 算法 + 原子化接口 (组件可能框架化/接口化)
|
四、系统设计是「分流节点」
系统设计之后,根据系统类型分叉到不同的专门设计路线:
1 2 3 4 5 6
| 系统设计 │ ├── 业务系统 → 模块设计 ├── 通信系统 → 组件设计 / 协议设计 / 框架设计 ├── GUI 系统 → 信息设计 / UI设计 / 交互设计 └── CLI 系统 → 命令 / 解析 / 分发 / 调用设计
|
业务系统这条线:
1 2
| 业务系统 → 模块划分 → 模块职责 → 模块关系 → 模块接口 → 模块内部 (原子接口 / 数据结构 / 算法)
|
通信系统这条线:
1 2
| 通信需求 → 通信系统设计 → 通信组件设计 → 组件接口设计 → 组件实现 → 框架化 → 系统组装
|
CLI 系统这条线:
1
| 命令设计 → 参数设计 → 解析设计 → 分发设计 → 调用设计 → 输出设计
|
GUI 系统这条线:
1 2
| 信息设计 → 页面设计 → 区域设计 → 组件设计 → 控件设计 → 交互设计 → 用户流程 → 视觉设计 → UI规范
|
三条路线不是固定都存在——系统设计决定后面走哪条路线。 识别角色是设计的第一步。
不是所有程序都有三个系统。 纯 CLI / 纯 GUI = 入口 + 业务(无通信系统);服务器 / 联网客户端才有通信系统(网络系统)。服务器是入口系统的一种,不是和通信系统并列的第四个系统。
五、三种系统类型汇总
1 2 3 4 5 6 7 8 9 10
| 程序 │ ┌─────────────┼─────────────┐ ↓ ↓ ↓ 入口系统 通信系统 业务系统 │ │ │ CLI/GUI Network Service Server Protocol Domain TUI Session Algorithm Codec Dispatch
|
六、和其他内容的关系
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 三大系统类型 ←→ 从指令到系统/03 03 是三大系统类型在通信程序上的实例(入口+业务+网络)
三大系统类型 ←→ 服务器 服务器是入口系统的一种(长期运行的服务入口)
三大系统类型 ←→ GUI-MVVM GUI 入口 = 入口系统;MVVM 是 GUI 入口内部的进一步拆分
三大系统类型 ←→ 网络系统 网络系统 = 通信系统的组件组织(5 组件)
三大系统类型 ←→ 系统角色主题 01 是主题的核心:定义三种角色 02/03/04 分别展开每种角色的完整形态
|
收束
1 2 3 4 5 6 7 8 9 10
| 程序 = 三种角色的系统: 入口系统(输入→调用)/ 通信系统(通信→消息)/ 业务系统(真正解决问题)
三种角色组织单位不同: 入口按交互,通信按组件,业务按模块
系统设计是分流节点: 识别角色 → 按角色走不同设计路线
三条路线不固定都存在,角色决定设计
|
程序由入口、通信、业务三种角色组成。 识别角色是设计的第一步——角色决定组织方式,组织方式决定设计路线。