首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设法将旧系统迁移到DDD概念

设法将旧系统迁移到DDD概念
EN

Stack Overflow用户
提问于 2022-01-08 13:30:20
回答 1查看 82关注 0票数 0

我在读埃里克·埃文斯关于DDD的书。我真的很喜欢书中的概念。我开始思考如何将一个旧项目迁移到这个(对我来说)新发现的概念。当然,我脑子里有一些问题。所以我在寻求帮助。

让我给你讲讲背景。该项目是一个管理问题及其内容的小型CMS项目。应用程序应支持以下结构:

  • Publisher它是根实体
  • 它是出版者的“子”
  • 发行它是出版物的“孩子”
  • 它是问题的“孩子”。
  • 它也是问题的“孩子”,把它想象成图像。
  • 第一条它可以是问题或章节的孩子

页面和文章是保存实际内容的两种类型。这就是我们用业务定义的结构。两个最重要的功能是“解析”和“发布”。

  1. 解析现在意味着从外部源读取数据,XML文件,并创建一个问题和相关的内容-文章和章节或网页。
  2. 发布它是一个标志,它显示是否应该显示内容。问题是,从问题开始,应该在所有内容中更新此标志。

我对此的想法是:上面描述的所有对象都应该是实体,因为它们需要单独查找,所以它们需要Id。然后,我认为它们也应该是聚合的,因为它们包含一些侧逻辑,对于某些对象,它们可能包含其他实体或值对象。因此,我将通过某种标识符对象来引用每个集合,这也会告诉我实体之间的关系。

我的主要功能有两个问题。

  1. 解析--我读到每个请求应该只保存/更新一个聚合。当我们解析内容时,我们收到一个聚合列表,它包含问题和它的内容,我需要将它存储到DB中。这意味着我有一个集合列表,我必须改变规则。不仅如此,还可以想象,如果我为某一期分析了60篇或更多的文章,并为每一篇文章、每一页或每一节解析应用程序激发OnCreate事件,会发生什么情况。你的方法是什么。
  2. 发布-实际上是一个问题,我必须更新60个聚合和事件在这里相同的情况。

应该有一种方法来用DDD概念来建模,但是我仍然试图找到它,而且每次开始阅读时,我都无法停止对这个场景的思考。

您将如何使用DDD来处理此场景?另外,如果您看到这种方法是面向DB的,请让我知道您的ides是什么?

EN

回答 1

Stack Overflow用户

发布于 2022-01-08 18:41:30

DDD书很棒,但是里面没有太多的代码。如果您有时间,请阅读实现领域驱动设计,因为它有大量的代码示例。

您可能需要的概念是一个。Sagas编排了对多个aggegrate的更改,取决于它是如何实现的,您可以将它看作一个工作流,并且在每个阶段更新不同的聚合。重要的是,如果应用程序在运行时出现故障,可以继续使用sagas。

从务实的角度来看,在过去,我确实更新了一个事务中的多个聚合,因为添加sagas可以在项目中引入很多复杂性。我认为只要所有的聚合都是从同一个地方修改(最好是一个简短的方法),并且聚合体之间没有交互,这是可以的。例如,假设您必须发布一组资源,所以解决方案是在多个聚合上循环调用将发布它们的方法)。

编辑

经过回忆,我发现这些文章是沃恩·弗农(我上面提到的那本书的作者)写的,涉及到这个主题:2011年/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70632784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档