gpt4 book ai didi

rest - DDD 和聚合事务边界

转载 作者:行者123 更新时间:2023-12-01 10:38:59 24 4
gpt4 key购买 nike

假设我有一个名为 document 的对象,它有一堆图像、音频、视频等形式的子对象。所以我的应用程序的用户可以通过键入一些文本、添加图像、视频等来创建一个文档。从我在 DDD 中的理解是,文档是一个聚合,而图像、视频总是与作为根的文档相关联。基于这种理解,我将如何设计一个允许用户创建/编辑文档的应用程序?我可以有一个 REST 端点来在一个请求中上传文档及其所有子项,但这可能是长时间运行的操作。或者,我可以设计 2 个 rest 端点,一个用于上传文档的文本正文并重复调用另一个来上传其子节点,这实际上意味着多个事务。第二种方法仍然是DDD吗?我是否通过将文档创建和更新拆分为多个请求而违反了事务边界?

最佳答案

一致性边界(我更喜欢这个术语而不是“事务边界”)不是一个指定允许更改的粒度的概念。他们告诉你什么可以原子地改变,什么不能。

例如,如果您将文档设计为与图像分开的聚合体,那么您不应在一次用户操作中同时更改文档和图像(即使技术上可行)。这意味着聚合不能太小,因为这对用户来说过于严格。但是,它们也不应该太大,因为一次只有一个用户可以更改聚合,因此较大的聚合往往会产生更多的冲突。

您应该尝试将聚合设计得尽可能小,但仍要足够大以支持您的用例。因此,您必须根据上述规则为您的应用程序自己弄清楚这一点。

因此,从 DDD 的角度来看,您提到的两种方法都是有效的。

关于rest - DDD 和聚合事务边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31574819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com