2026-06-09 / 微服务 & DDD

领域模型如何落地:分层、聚合与上下文边界

领域模型落地需要同时处理分层职责、聚合一致性和上下文边界,避免模型被数据库或框架牵着走。

微服务DDD领域建模

领域模型如何落地:分层、聚合与上下文边界

领域模型落地的难点不在于“有没有实体类”,而在于规则放在哪里、事务边界在哪里、不同上下文之间如何协作。

问题背景

很多项目表面上有 Domain 层,但规则散落在 Controller、Service、SQL 和前端校验里。结果是任何一个业务规则变化,都要在多处找实现。

核心概念

分层解决职责边界,聚合解决一致性边界,限界上下文解决语义边界。三者缺一不可。

flowchart TB
    A["接口层"] --> B["应用层"]
    B --> C["领域层"]
    C --> D["聚合 / 值对象 / 领域服务"]
    B --> E["基础设施层"]
    E --> F["数据库 / 消息 / 外部服务"]

实际工程场景

例如审批系统里,审批单能否提交不是简单字段校验,而是由状态、申请人权限、金额阈值和流程配置共同决定。这个规则应进入领域模型,而不是散落在 API 层。

常见误区

  • 聚合设计过大,把所有关联对象都塞进一个事务。
  • 只按数据库外键设计对象关系。
  • 让应用服务承载所有业务判断,领域对象只剩 getter/setter。

最佳实践

  • 聚合只保护必须强一致的规则。
  • 跨聚合协作用事件或应用服务编排。
  • 领域对象方法名使用业务语言。
  • 每个上下文都允许拥有自己的模型,而不是共享一个全局模型。
领域模型如何落地:分层、聚合与上下文边界 | Remi Resume