当前位置: 首页 > 知识库问答 >
问题:

HATEOAS REST API和领域驱动设计,工作流逻辑放在哪里?

隗俊誉
2023-03-14

每个域对象包含与特定有界上下文(X)中的特定对象相关联的业务逻辑。REST API包含将查询或命令的结果转换为通过网络发送的数据(例如JSON)的逻辑。当使用HATEOAS和超媒体时,我们希望使用链接来建模资源之间的关系。但是,为了确定REST API应该返回哪些链接,通常需要求助于业务逻辑/规则。问题是,这些“工作流规则”在DDD应用程序中属于哪里?它们可能在一个不同的有界上下文中只处理工作流规则(可能在与X的类似“伙伴”的关系中),还是属于X BC?

共有1个答案

林绪
2023-03-14

我不是DDD专家(仅通过Eric Evan的书中的100页),但我可以告诉你在我们的电子商务目录中发生了什么。

最初,我们基于数据和请求用户的角色/权限,在应用程序的相同有界上下文中有这样的业务流,我们改变了呈现给用户的状态转换(您说的是链接,但这实际上是它的核心,链接只是呈现状态转换的一种方式)。这工作正常,但执行了大量重复的逻辑。然后,我们添加了一个搜索应用程序,它是一个不同的有界上下文,因为它显示了相同的数据,但在不同的集合/分组中,我们不希望它们不同步。

我们转到了CQRS实现,因此我们的许多业务逻辑是“预先计算”的,因此它类似于“合作伙伴上下文”,作为我们从写模型到读模型的投影的一部分。我们不专门存储链接,而是在数据上标记允许的行为。catalog应用程序和search应用程序都使用这个读模型和它的行为标志来确定要呈现给客户端的状态转换。

 类似资料:
  • 我正在学习DDD概念,为了加强我的理解,我正在研究一些现实世界的例子。 我知道一个聚合应该只有一个通过根实体的入口点,一个聚合应该只有一个存储库(如果我完全理解错了,请纠正我) 现在假设有特定类型的消耗品,并且这些消耗品是从配送中心发送的。发送特定类型的消耗品取决于它们的数量,我的意思是,如果其中一个消费者对A型和B型的临界数量为10,并且这些项目的数量低于10,那么配送中心发送A型和B型消耗品。

  • 本文向大家介绍谈一下领域驱动设计相关面试题,主要包含被问及谈一下领域驱动设计时的应答技巧和注意事项,需要的朋友参考一下 主要关注核心领域逻辑。基于领域的模型检测复杂设计。这涉及与公司层面领域方面的专家定期合作,以解决与领域相关的问题并改进应用程序的模型。在回答这个微服务面试问题时,您还需要提及DDD的核心基础知识。他们是: DDD主要关注领域逻辑和领域本身。 复杂的设计完全基于领域的模型。 为了改

  • 本文向大家介绍什么是领域驱动设计(DDD)相关面试题,主要包含被问及什么是领域驱动设计(DDD)时的应答技巧和注意事项,需要的朋友参考一下 专注于核心领域逻辑 在模型上找到综合的设计 不断与领域专家合作,改进应用程序模型并解决与领域相关的问题

  • null 到目前为止,很容易。如果我们试图将规范应用到存储库,而又不破坏DDD模式或存在性能问题,那么问题就会出现。 应用规范的可能方法: 1)经典方法:在领域层使用领域模型进行规范 null null 3)与2)类似,但将规范作为持久层的一部分 这不起作用,因为域层需要参考规范。它仍将取决于持久层。 我们将在持久层中拥有业务逻辑。这也违反了DDD模式 4)与3类似,但使用抽象规范作为接口 nul

  • Eric Evans在DDD中谈了很多关于模型进化的话题,所以重构似乎对DDD是必不可少的。当一个人拥有世界的关系持久化状态时,可以通过迁移来处理模型更改,从而更改数据库模式。 使用事件源时,如何应对模型更改?如果对聚合有不兼容的更改,这将阻止事件的重播,是否有某种最佳实践?还是只是不要?

  • 我有一个项目,我正在通过GSON和Volley阅读一些json。我想把我的数据保存在数据库中,我希望Realm是一个好的解决方案。我选择了我的第一个类,它有七个成员变量,所有的Strings和int,并让它扩展RealmObject,并将其中一个int确定为主键。它编译得很好,但是当它运行时,我在日志中得到大量的输出,最终应用程序在显示主要活动之前就崩溃了。GSON似乎不喜欢解析扩展了RealmO