mirror of
https://github.com/chenx-dust/EZ4Connect.git
synced 2026-09-20 02:13:32 +08:00
44 lines
1.8 KiB
Markdown
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` 目录;只有跨多个职责且没有明确归属的代码才需要新建
|
|
共享模块。
|