service - DDD 在存储库中使用服务

标签 service architecture domain-driven-design repository

问题:

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

讨论要点:

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

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

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

最佳答案

I could create a Service that pulls the data from the feed, and then inject that service into the Repository.



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

My question is how to use Services and Repositories in this case.



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

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

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

关于service - DDD 在存储库中使用服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17092982/

相关文章:

c# - 在 EventStore 中搜索流

android - 如何将数据从 Activity 传递到正在运行的服务

android - 使用 Service 运行后台并创建通知

android - 同步 SQLite 数据库和 Dropbox 数据存储

java - 方面是否替代存储库?

c# - 如何为其中一个是事件项目的项目集合建模?

java - 如果从同一文件调用,服务将被销毁,但如果创建该服务的对象(并从单独的文件调用),则服务不会被销毁

Android:将对象从 Activity 传递到服务

java - 你如何命名你的版本?

MySQL:如何获取存储函数内存储过程的结果?