DDD中的聚合中的读取模型是什么以及在何处使用它们?

时间:2017-09-23 14:47:44

标签: c# domain-driven-design aggregateroot invariants

我知道在DDD中删除聚合根意味着立即删除聚合边界内的所有内容。

但是我注意到阅读模型(只读属性)在聚合中使用,如Lev Gorodinski在本博客中所述:http://gorodinski.com/blog/2012/04/25/read-models-as-a-tactical-pattern-in-domain-driven-design-ddd/

但是因为这些模型是聚合的一部分。那么,在删除或更新聚合的情况下,我们如何对待它们?

另外,我们可以使用它们来确保聚合的不变量/一致性吗?

我很感激有关它们的示例以及我们如何在不违反DDD原则的情况下在聚合中使用它们。

1 个答案:

答案 0 :(得分:1)

  

但是因为这些模型是聚合的一部分。所以,我们如何对待它们   删除或更新我们的汇总的情况?

它们不是Aggregate的一部分(Aggregate是写入模型)。在最好的情况下,它们是一个或多个聚合的视图或投影。

  

另外,我们可以使用它们来确保聚合的不变量/一致性吗?

不,因为他们不是聚合的一部分。您可以使用它们进行验证,但最终一致的预聚合验证和非常特殊的情况下(如果您需要此验证是强一致的,那么您应该检查您的聚合边界,因为它们可能是错误的)

P.S。该博客文章指出,这些读取模型将由var http = require("http"); const url = "http://kitsu.io/api/edge/anime?=cowboy%20bebop"; http.get(url, res => { res.setEncoding("utf8"); let body = ""; res.on("data", data => { body += data; }); res.on("end", () => { body = JSON.parse(body); //then do stuff here }); }); 或类似物使用,而不是由聚合物使用。