这里例子来源于 https://github.com/kgrzybek/modular-monolith-with-ddd ,和 DDD 案例 1 一样,也采用 monorepo 形式组织多个模块, 这些模块可以随时提取为微服务, 这是一个比较正式的 DDD 示例。
概要
C4 模型
顶层视图

示例项目拆分了 4 个模块 , 规则:
- API: 类似于 DDD 四层架构的接口层,API 在这里负责接受请求、鉴权和认证、将工作代理给具体
模块
的命令和请求,最后返回响应。
- 不包含业务逻辑
- API 通过模块暴露的命令、请求接口来调用模块。
- API 负责初始化各个模块
- 模块
- 模块之间通信只能使用异步的事件(IntegrationEvents),不能直接调用,不共享状态。
- 模块内部可以通过领域事件通信(跨聚合)
- 每个模块都有自己独立的数据(表),如果需要,可以迁移到独立数据库
- 模块会向 API 暴露接口
- 模块是高度内聚的, 只有少量的、必要的类型和成员会暴露出去
模块内部视图