mirror of
https://github.com/chenx-dust/EZ4Connect.git
synced 2026-09-20 02:13:32 +08:00
1.8 KiB
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 创建并注入:
CoreProcess→ZjuConnectProcessSystemProxyBackend→PlatformSystemProxyBackendProfileBackend→ProfileManager
主要流程
MainWindowCoordinator是主界面的组合入口,并维护 VPN 与系统代理之间的生命周期联动。ConnectionUiController处理连接、断开、系统代理按钮及错误展示。AuthDialogCoordinator管理登录、sudo、验证码、TOTP 和 SSO 对话框。ConnectionSession负责核心进程、重连和连接状态,不依赖具体QProcess实现。ProfileService持有当前配置上下文,SettingsMigrator负责配置版本迁移。
新增代码应按“变化原因”归位:界面行为放入 presentation,用例状态放入
application,平台或文件 I/O 放入 infrastructure,可独立验证的连接规则放入
core。不要重新引入通用 utils 目录;只有跨多个职责且没有明确归属的代码才需要新建
共享模块。