在 DDD 的域层导入外部库

Importing external libraries in the domain layer in DDD

我正在构建一个基于 DDD 和六边形架构的应用程序。 六边形架构建议你不应该,比方说,用别处的逻辑污染你的域,你的域层应该是“纯粹的”并且只包含你的业务逻辑。

但是,如果我有一个值对象,我想在其中从外部库生成 ID 怎么办?例如 UUID。

这并没有污染我的域,但我仍然在我的域层中导入第三方,它应该放在基础结构层中。

但是,每次我想为时间格式、转换器做这种事情时都这样做......它会变得有点乏味。

Domain 层中的第三方导入是否有例外?如果是,取决于什么?

大家怎么看?

非常感谢

DDD 指出,业务事项进入领域层,非业务事项不进入。如果 ID 生成是一个业务逻辑,那么在你的领域层导入那个库是没有问题的。它实际上是您领域层的一部分,尽管您没有自己维护该部分。

当我们说领域层应该保持“纯粹”时,这意味着您的业务逻辑不应被基础设施或表示问题所污染。如果 ID 生成只是为了持久性问题(代理键),那么这是一个基础设施问题,这个生成应该由持久性存储或基础设施适配器完成。