DDD 使用存储库中的服务

4 architecture service domain-driven-design repository

问题:

我正在从 XML 提要中提取第三方数据。我需要获取这些数据并将其转换为实体。

讨论要点:

我的问题是在这种情况下如何使用服务和存储库。因此,例如,我可以创建一个从提要中提取数据的服务,然后将该服务注入到存储库中,然后可以使用它来提取数据并将其转换为实体。但我不确定这是否是正确的方法?

存储库可以具有提取数据然后将其映射到实体的逻辑,但我认为存储库不应该处理该逻辑?还是应该?

从 DDD 关注点分离的角度来看,应该如何最好地架构?

Mat*_*vey 5

我可以创建一个从提要中提取数据的服务,然后将该服务注入到存储库中。

这不会被视为 DDD 中的域服务,因为它与域无关。这纯粹是一个技术基础设施问题。

我的问题是在这种情况下如何使用服务和存储库。

听起来您在这里可能有两个不同的问题。存储库显然提供了在有界上下文方面对数据的访问,但我敢打赌,在 XML 数据和您的存储库之间进行了一些额外的数据操作/转换......

在 DDD 术语中,这将被视为反腐败层。您无法控制外部数据源,并且希望防止此外部数据的格式破坏您精心设计的域模型的完整性。

可以将反腐败层注入存储库 - 只要其目的明确定义即可。这不会被视为域服务,因为它与域无关,它是由外部数据源的性质驱动的纯制造。