我在读埃里克·埃文斯关于DDD的书。我真的很喜欢书中的概念。我开始思考如何将一个旧项目迁移到这个(对我来说)新发现的概念。当然,我脑子里有一些问题。所以我在寻求帮助。
让我给你讲讲背景。该项目是一个管理问题及其内容的小型CMS项目。应用程序应支持以下结构:
页面和文章是保存实际内容的两种类型。这就是我们用业务定义的结构。两个最重要的功能是“解析”和“发布”。
我对此的想法是:上面描述的所有对象都应该是实体,因为它们需要单独查找,所以它们需要Id。然后,我认为它们也应该是聚合的,因为它们包含一些侧逻辑,对于某些对象,它们可能包含其他实体或值对象。因此,我将通过某种标识符对象来引用每个集合,这也会告诉我实体之间的关系。
我的主要功能有两个问题。
应该有一种方法来用DDD概念来建模,但是我仍然试图找到它,而且每次开始阅读时,我都无法停止对这个场景的思考。
您将如何使用DDD来处理此场景?另外,如果您看到这种方法是面向DB的,请让我知道您的ides是什么?
发布于 2022-01-08 18:41:30
DDD书很棒,但是里面没有太多的代码。如果您有时间,请阅读实现领域驱动设计,因为它有大量的代码示例。
您可能需要的概念是一个或。Sagas编排了对多个aggegrate的更改,取决于它是如何实现的,您可以将它看作一个工作流,并且在每个阶段更新不同的聚合。重要的是,如果应用程序在运行时出现故障,可以继续使用sagas。
从务实的角度来看,在过去,我确实更新了一个事务中的多个聚合,因为添加sagas可以在项目中引入很多复杂性。我认为只要所有的聚合都是从同一个地方修改(最好是一个简短的方法),并且聚合体之间没有交互,这是可以的。例如,假设您必须发布一组资源,所以解决方案是在多个聚合上循环调用将发布它们的方法)。
编辑
经过回忆,我发现这些文章是沃恩·弗农(我上面提到的那本书的作者)写的,涉及到这个主题:2011年/
https://stackoverflow.com/questions/70632784
复制相似问题