Files
EZ4Connect/docs/ARCHITECTURE.md
2026-07-28 14:09:26 +08:00

1.8 KiB

架构说明

EZ4Connect 使用轻量级分层架构。界面层通过 Coordinator 组合应用服务和平台实现,避免 MainWindow 直接承担连接进程、配置存储及认证窗口的生命周期。

目录职责

core/             连接领域模型与状态机,不依赖界面和平台实现
application/      用例、会话及基础设施端口
infrastructure/   QProcess、QSettings、系统代理、文件和更新检查等实现
presentation/     Qt Widgets 界面、对话框和界面流程 Coordinator
tests/            按端口或纯逻辑边界测试各层行为

依赖方向为:

presentation -> application -> core
       |              ^
       v              |
infrastructure -------+

application 不引用 presentation 或具体的 infrastructure 类型。具体实现统一由 MainWindowCoordinator 创建并注入:

  • CoreProcessZjuConnectProcess
  • SystemProxyBackendPlatformSystemProxyBackend
  • ProfileBackendProfileManager

主要流程

  • MainWindowCoordinator 是主界面的组合入口,并维护 VPN 与系统代理之间的生命周期联动。
  • ConnectionUiController 处理连接、断开、系统代理按钮及错误展示。
  • AuthDialogCoordinator 管理登录、sudo、验证码、TOTP 和 SSO 对话框。
  • ConnectionSession 负责核心进程、重连和连接状态,不依赖具体 QProcess 实现。
  • ProfileService 持有当前配置上下文,SettingsMigrator 负责配置版本迁移。

新增代码应按“变化原因”归位:界面行为放入 presentation,用例状态放入 application,平台或文件 I/O 放入 infrastructure,可独立验证的连接规则放入 core。不要重新引入通用 utils 目录;只有跨多个职责且没有明确归属的代码才需要新建 共享模块。