API 基础设施 类 应该是 DDD 中域的一部分吗?

Should API infrastructure classes be part of the domain in DDD?

我开发的后端应用程序公开了 REST API,并且我(尝试)在我的项目中使用领域驱动设计。

REST API 在一组固定的域 class 上运行。对于域中的每个聚合根,都有一个单独的 REST 端点。然而,尽管付出了所有努力,但在某些情况下,新的 classes 并非源自域 classes(基础设施 classes)出现,例如:

现在有两个选择:

您不应尝试直接针对您的域模型构建 REST API。对于这样一个会扰乱您的域模型的接口,您需要承担很多责任。例如。事务控制、安全性、输入验证是您可能需要的东西,但不属于域模型。

这就是应用程序服务的用途。

围绕包含应用程序服务的域模型构建一个层(通常称为服务层)。应用服务是领域模型的直接客户。它们通常围绕 用例 而不是聚合进行组织。现在您的 REST API 是应用服务的直接客户端,而不是域模型。

您提到的两个 类 也可以很好地融入服务层。

编辑:

请注意,在使用六边形架构(非常适合 DDD)时,服务层与持久层不同。服务层使用持久层将聚合加载和保存到数据库。