6.6 KiB
6.6 KiB
README 更新总结 - Service 层架构细化
更新时间: 2026-03-24
更新内容: 细化 Service 层架构说明
✅ 已完成的更新
1. 新增详细文档
创建了 [docs/Service 层架构详解.md](file://e:\Project\MeshRay\docs\Service 层架构详解.md),包含:
完整的服务模块清单
internal/service/
├── network.go # 组网管理
├── device.go # 设备管理
├── policy.go # 策略管理
├── external_service.go # 外部服务管理
├── user.go # 用户认证
├── monitor.go # 监控告警
├── ddns.go # DDNS 同步
└── audit.go # 审计日志
每个 Service 的核心职责
- ✅ 业务规则校验
- ✅ 数据生成/转换/加密
- ✅ 数据库 CRUD
- ✅ 调用 Ctr 执行实时操作(可选)
Service 与 Ctr 的关系图
Service 层(业务逻辑) Ctr 层(实时控制)
NetworkService.CreateNetwork() → 调用 → Ctr.CreateNetwork()
UserService.Login() → 不调用 ❌ 不参与
DeviceService.AddDevice() → 调用 → Ctr.AddPeer()
详细的代码示例
- CreateNetwork 完整流程
- GenerateMeshSeed 纯业务逻辑
- Login 完全不依赖 Ctr
- SetPolicy 部分依赖 Ctr
2. README.md 主要更新
更新 1:目录结构引用
└── docs/ # 技术文档
├── README.md # 项目介绍
├── 关键技术.md # 技术详解
├── Service 层架构详解.md # Service 层详细设计 ← 新增
└── ExternalService 三层架构设计.md
更新 2:核心架构章节新增说明
在"核心架构"章节后添加了 Service 层详细说明:
### Service 层架构说明
**Service 层是业务逻辑的核心**,包含以下模块:
- **NetworkService**:组网管理(创建/删除/MeshSeed 生成)
- **DeviceService**:设备管理(密钥生成/WG 配置导出)
- **PolicyService**:策略管理(9 层传输策略配置)
- **ExternalService**:外部服务管理(STUN/TURN/DDNS)
- **UserService**:用户认证(登录/注册/JWT)
- **MonitorService**:监控告警(状态采集/告警规则)
- **DDNSService**:DDNS 同步(libdns 集成)
- **AuditService**:审计日志(操作记录)
**每个 Service 的职责**:
1. 业务规则校验
2. 数据生成/转换/加密
3. 数据库 CRUD
4. 调用 Ctr 执行实时操作(可选)
> 📖 **详细文档**:参见 [`docs/Service 层架构详解.md`](docs/Service 层架构详解.md)
🎯 关键改进点
改进 1:明确 Service 层的核心地位
之前的问题:
- README 只展示了高层架构(Web → API → Service → Ctr)
- 没有详细说明 Service 层的内部结构
- 容易让人误解 Service 只是调用 Ctr 的二传手
现在的改进:
- ✅ 明确 Service 层是"业务逻辑的核心"
- ✅ 列出所有 8 个 Service 模块
- ✅ 说明每个 Service 的完整职责
- ✅ 强调 Ctr 只是 Service 调用的一个执行器
改进 2:区分依赖 Ctr 和不依赖 Ctr 的场景
依赖 Ctr 的场景:
- CreateNetwork(创建设备)
- AddDevice(添加 Peer)
- UpdatePolicy(应用策略)
不依赖 Ctr 的场景:
- Login/Register(用户认证)
- GenerateMeshSeed(凭证生成)
- ValidatePolicy(策略校验)
- GetDeviceConfig(配置导出)
- ListAuditLogs(日志查询)
改进 3:提供完整的代码示例
在 docs/Service 层架构详解.md 中提供了:
完整的业务流程示例:
func (s *NetworkService) CreateNetwork(req CreateNetworkRequest) (*Network, error) {
// ① 业务规则校验
if req.Name == "" {
return nil, errors.New("组网名称不能为空")
}
// ② 数据生成
networkID := snowflake.Generate()
secret := generateSecureSecret()
// ③ 保存到数据库
err := s.store.DB().Create(&Network{...}).Error
// ④ 调用 ctr 执行(事务外,失败需回滚)
err = s.ctrClient.CreateNetwork(networkID, config)
if err != nil {
s.store.DB().Delete(&network) // 回滚
return nil, fmt.Errorf("调用 ctr 失败:%w", err)
}
return network, nil
}
📊 架构对比
之前的理解(错误)
Service 层 = 只是调用 ctr 的二传手
正确的理解(现在)
Service 层 = 完整的业务逻辑层
├─ 业务规则校验(纯逻辑)
├─ 数据生成/转换/加密(纯计算)
├─ 数据库 CRUD(持久化)
└─ 调用 ctr 执行(可选,只是最后一步)
📝 文档结构优化
文档层次
README.md(项目介绍)
├─ 项目简介
├─ 核心架构(高层视图)
│ └─ "详见 docs/Service 层架构详解.md"
├─ 关键机制
└─ 技术栈
docs/
├─ Service 层架构详解.md ← 新增
│ ├─ Service 层模块划分
│ ├─ 每个 Service 的职责
│ ├─ Service 与 Ctr 的关系
│ ├─ 完整的代码示例
│ └─ 设计原则总结
├─ 关键技术.md
└─ ExternalService 三层架构设计.md
✅ 验收标准
文档完整性
- ✅ README.md 添加了 Service 层说明
- ✅ 创建了详细的 Service 层架构文档
- ✅ 包含所有 8 个 Service 模块
- ✅ 提供了代码示例
- ✅ 说明了 Service 与 Ctr 的关系
架构清晰度
- ✅ 明确了 Service 层的核心地位
- ✅ 区分了依赖/不依赖 Ctr 的场景
- ✅ 说明了每个 Service 的职责
- ✅ 提供了完整的调用链示例
开发者友好
- ✅ 新成员可以快速理解 Service 层的作用
- ✅ 知道何时应该调用 Ctr,何时不应该
- ✅ 有详细的代码示例可以参考
- ✅ 有清晰的架构图可以帮助理解
🎉 总结
通过这次更新,我们:
- ✅ 明确了 Service 层的定位:业务逻辑的核心,不只是调用 Ctr
- ✅ 细化了 Service 层的模块:8 个完整的 Service
- ✅ 区分了不同的场景:哪些需要调用 Ctr,哪些不需要
- ✅ 提供了详细文档:
docs/Service 层架构详解.md569 行完整说明 - ✅ 更新了 README:添加了 Service 层架构说明和文档引用
结果:
- ✅ README.md 更加完整
- ✅ Service 层架构清晰明了
- ✅ 新成员可以快速上手
- ✅ 开发时有明确的指导
更新完成时间:2026-03-24
版本:v1.0 README UPDATE
状态:✅ 完成