Files
EZ4Connect/docs/ARCHITECTURE.md
2026-08-10 19:04:20 +08:00

44 lines
1.8 KiB
Markdown

# 架构说明
EZ4Connect 使用轻量级分层架构。界面层通过 Coordinator 组合应用服务和平台实现,避免
`MainWindow` 直接承担连接进程、配置存储及认证窗口的生命周期。
## 目录职责
```text
core/ 连接领域模型与状态机,不依赖界面和平台实现
application/ 用例、会话及基础设施端口
infrastructure/ QProcess、QSettings、系统代理、文件和更新检查等实现
presentation/ Qt Widgets 界面、对话框和界面流程 Coordinator
tests/ 按端口或纯逻辑边界测试各层行为
```
依赖方向为:
```text
presentation -> application -> core
| ^
v |
infrastructure -------+
```
`application` 不引用 `presentation` 或具体的 `infrastructure` 类型。具体实现统一由
`MainWindowCoordinator` 创建并注入:
- `CoreProcess``ZjuConnectProcess`
- `SystemProxyBackend``PlatformSystemProxyBackend`
- `ProfileBackend``ProfileManager`
## 主要流程
- `MainWindowCoordinator` 是主界面的组合入口,并维护 VPN 与系统代理之间的生命周期联动。
- `ConnectionUiController` 处理连接、断开、系统代理按钮及错误展示。
- `AuthDialogCoordinator` 管理登录、sudo、验证码、TOTP 和 SSO 对话框。
- `ConnectionSession` 负责核心进程、重连和连接状态,不依赖具体 `QProcess` 实现。
- `ProfileService` 持有当前配置上下文,`SettingsMigrator` 负责配置版本迁移。
新增代码应按“变化原因”归位:界面行为放入 `presentation`,用例状态放入
`application`,平台或文件 I/O 放入 `infrastructure`,可独立验证的连接规则放入
`core`。不要重新引入通用 `utils` 目录;只有跨多个职责且没有明确归属的代码才需要新建
共享模块。