<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>DDD - Tag - 帅说帅话</title><link>https://xiaoshuai1024.github.io/tags/ddd/</link><description>DDD - Tag - 帅说帅话</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Mon, 17 Mar 2025 21:00:00 +0800</lastBuildDate><atom:link href="https://xiaoshuai1024.github.io/tags/ddd/" rel="self" type="application/rss+xml"/><item><title>DDD 领域模型在低代码后端服务中的应用</title><link>https://xiaoshuai1024.github.io/posts/ddd-domain-model-in-lowcode-backend/</link><pubDate>Mon, 17 Mar 2025 21:00:00 +0800</pubDate><author>Author</author><guid>https://xiaoshuai1024.github.io/posts/ddd-domain-model-in-lowcode-backend/</guid><description>低代码平台的后端不仅要支撑「站点、页面、用户、系统设置」等资源的 CRUD，还要在 API 契约统一、多端对接（管理后台 BFF、对外站点）的前提下，保持领域边界清晰、业务规则可演进。本文从架构师视角，以 luban-backend 的实现为蓝本，说明 DDD 领域模型设计在低代码后端服务中的应用，包括战略层面的限界上下文划分与战术层面的实体、应用服务、领域异常及与 BFF 的协作方式。
一、为什么低代码后端需要领域模型 低代码后端的核心职责可以概括为：
内容模型：站点（Site）与页面（Page + PageSchema）的创建、发布、按路径访问； 身份与权限：用户（User）与认证（登录、/auth/me）、基于角色的访问控制（RequireUser / RequireAdmin）； 系统配置：系统设置（SystemSettings）的读写与缓存（如 Redis）； 对外能力：按站点 slug + 路径对外暴露已发布页面，无需鉴权（供官网等消费）。 若仅按「表结构 + Controller + Service」平铺，很容易出现：
业务规则散落在各处，修改一处忘记另一处； 错误语义不统一，前端/BFF 难以稳定处理； 扩展新资源或新上下文时边界模糊，影响可维护性。 引入 DDD 的领域模型思维（不必强求完整 DDD 框架），可以在保持实现轻量的前提下，获得清晰的边界、一致的业务语义和可演进的 API 契约。下面从战略与战术两方面结合 luban-backend 说明。
二、战略设计：限界上下文与能力边界 从业务能力出发，可将低代码后端划分为以下限界上下文（Bounded Context），与当前模块/包结构对应关系如下。
限界上下文 职责 主要实体与概念 对外暴露 站点与页面（Content） 站点与页面的生命周期、同站点下 path 唯一、schema 存储 Site（聚合根）、Page（实体，属 Site） 管理端 CRUD；公开接口按 slug+path 查已发布页 用户与认证（Identity &amp;amp; Auth） 用户管理、登录校验、当前用户解析 User（聚合根）、角色/状态 登录、/auth/me；Header 注入 X-User-ID / X-User-Role 系统设置（Settings） 全局配置的读写与缓存 SystemSettings（单例式聚合） GET/PUT /settings，仅 Admin 公开访问（Public） 按站点 slug + path 返回已发布页面，只读、无鉴权 复用 Site、Page，只读、过滤 status=published GET /public/sites/:slug/pages?</description></item></channel></rss>