三大系统类型:入口 / 通信 / 业务

程序可以按角色分成三大系统类型:入口系统(把外部输入转换成系统调用)、通信系统(把外部通信转换成内部消息)、业务系统(真正完成程序要解决的问题)。三种角色职责完全不同,内部组织方式不同,设计路线也不同。这是系统角色组成的核心。


一、程序的三分结构

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
程序 = 三种角色的系统:
入口系统(输入→调用)/ 通信系统(通信→消息)/ 业务系统(真正解决问题)

三种角色组织单位不同:
入口按交互,通信按组件,业务按模块

系统设计是分流节点:
识别角色 → 按角色走不同设计路线

三条路线不固定都存在,角色决定设计

程序由入口、通信、业务三种角色组成。 识别角色是设计的第一步——角色决定组织方式,组织方式决定设计路线。