Domain driven design DDD\ES\CQRS中应用程序的CRUD部分

Domain driven design DDD\ES\CQRS中应用程序的CRUD部分,domain-driven-design,cqrs,event-sourcing,Domain Driven Design,Cqrs,Event Sourcing,我想在我的项目中使用DDD\CQRS\ES。我刚开始使用它,所以我没有很多经验。我知道现有的核心领域,支持领域和CRUD领域。我的核心域引用了CRUD数据。例如,顺序中有许多业务规则,但其中包含有关交付公司、接收点等的基本信息 这些信息由管理员管理。在我看来,我应该使用crud方法,但是当我需要回滚事件时会发生什么呢 系统将存储混合的数据——从事件源还原,从应用程序的crud部分实际还原。我最终会得到不一致的数据。例如,订单可能由不存在的公司维护(管理员在其已交付包时删除了该公司,但在回滚订单仍

我想在我的项目中使用DDD\CQRS\ES。我刚开始使用它,所以我没有很多经验。我知道现有的核心领域,支持领域和CRUD领域。我的核心域引用了CRUD数据。例如,顺序中有许多业务规则,但其中包含有关交付公司、接收点等的基本信息

这些信息由管理员管理。在我看来,我应该使用crud方法,但是当我需要回滚事件时会发生什么呢

系统将存储混合的数据——从事件源还原,从应用程序的crud部分实际还原。我最终会得到不一致的数据。例如,订单可能由不存在的公司维护(管理员在其已交付包时删除了该公司,但在回滚订单仍处于活动状态后) 在每个项目中都是CRUD数据的一部分,那么如何处理这个问题呢? 我应该存储公司事件吗

此外,当我添加新订单时,我应该通过事件发送公司名称和id,因为当我重建ReadStore时,数据库中可能没有公司,所以我无法从存储库中获取公司名称

你知道有什么CRUD框架可以处理simples CRUD操作吗

PS.2您是否知道任何开源项目的示例,其中包含ES\CQRS方法中应用程序的CRUD部分


嗯。也许我描述得太复杂了。我只想知道:

  • 如何实现应用程序的最简单部分(糟糕的业务 逻辑-主要是CRUD操作)当我将我的核心域存储在 事件存储区和我希望能够还原 我的核心领域

  • 我是否应该将crud操作也存储在事件存储中

  • 如何在回滚事件存储后提供数据一致性

  • 您建议Java应用程序使用哪种CRUD框架


我不知道您到底想问什么,但如果它涉及DDD和CRUD操作,虽然我自己没有尝试过,但可能会对您有所帮助。

我认为这是处理DDD时的常见问题,尤其是在处理ES时。这听起来可能很简单,但您需要查找域中的有界上下文。事实证明,这种有边界的上下文很好地映射到SOA的服务上。现在,当您使用SOA时,您会意识到并非所有服务(SOA中的服务不是web/windows服务中的服务)都需要实现相同的功能

根据我的经验,你总是会有一些服务主要处理CRUD操作和很少的业务逻辑,通常由管理员/特殊用户使用的应用程序使用。这种服务可以而且应该以尽可能少的努力来实现,不需要CQR和ES,也不需要使它们过于复杂。只要确保他们在发生事情时发布相关消息

我强烈推荐

Udi Dahan也有一些关于SOA和SOA含义的非常好的视频:以及


我意识到这实际上并没有回答你问题的所有细节,但我希望它能为你指明正确的方向

为什么不简单地将CRUD部分视为仅附加(如果必须,可能允许更新)或将足够的数据复制到事件中,以便重要数据不会丢失