Appearance
三层架构
灵动桌面框架的 Rust 后端采用严格的三层架构,确保代码职责清晰、易于维护。
架构图
┌─────────────────────────────────────────┐
│ 前端 invoke('set_config', {...}) │
└──────────────────┬──────────────────────┘
↓
┌──────────────────────────────────────────┐
│ Layer 1: Commands(命令层) │
│ ● 接收 IPC 请求、参数校验 │
│ ● 调用 Service 层 │
└──────────────────┬───────────────────────┘
↓
┌──────────────────────────────────────────┐
│ Layer 2: Services(业务层) │
│ ● 业务逻辑处理、数据转换 │
│ ● 调用 Database 层 │
└──────────────────┬───────────────────────┘
↓
┌──────────────────────────────────────────┐
│ Layer 3: Database(数据层) │
│ ● SQL 操作、Schema 迁移 │
└──────────────────────────────────────────┘各层职责
| 层级 | 目录 | 职责 | 错误类型 |
|---|---|---|---|
| Command | src-tauri/src/commands/ | IPC 入口,参数校验 | CommandError |
| Service | src-tauri/src/services/ | 业务逻辑 | AppError |
| Database | src-tauri/src/database/ | 数据访问 | AppError |
调用流程示例
前端: setConfig('theme', 'dark')
→ Command 层: 校验参数非空
→ Service 层: 执行业务逻辑
→ Database 层: INSERT/UPDATE SQL开发规范
- Command 层不写业务逻辑,只做参数校验和转发
- Service 层不写 SQL,只调用 Database 方法
- Database 层不写业务逻辑,只做数据访问
- 禁止跨层调用(Command 直接调 Database)