Files
Meshray-Manager/docs/README_Service 层更新总结.md
2026-06-30 15:14:37 +08:00

6.6 KiB
Raw Permalink Blame History

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,何时不应该
  • 有详细的代码示例可以参考
  • 有清晰的架构图可以帮助理解

🎉 总结

通过这次更新,我们:

  1. 明确了 Service 层的定位:业务逻辑的核心,不只是调用 Ctr
  2. 细化了 Service 层的模块8 个完整的 Service
  3. 区分了不同的场景:哪些需要调用 Ctr,哪些不需要
  4. 提供了详细文档docs/Service 层架构详解.md 569 行完整说明
  5. 更新了 README:添加了 Service 层架构说明和文档引用

结果

  • README.md 更加完整
  • Service 层架构清晰明了
  • 新成员可以快速上手
  • 开发时有明确的指导

更新完成时间:2026-03-24
版本:v1.0 README UPDATE
状态: 完成