具有事件采购的领域模型

时间:2015-06-13 14:30:36

标签: .net design-patterns cqrs event-sourcing event-driven-design

愚蠢的问题......但是如果我使用事件采购,为什么我需要一个域模型。

我有(事件总线当然)和

  • 具有业务操作的应用程序服务,每个业务操作在基本验证后发送命令
  • 接收命令的命令处理程序执行其他命令验证并发布事件
  • 处理事件,更新读取模型以及将事件存储在存储库(事件源)中的事件处理程序
  • 阅读提供阅读模型的模型服务
  • 使用Read Model Services中的Read Models的前端(UI或其他)...并利用Application Services进行业务操作。

为什么我需要聚合根和域实体?附加层的功能是什么?

3 个答案:

答案 0 :(得分:4)

你没有。

领域驱动设计是关于使用无处不在的领域专家语言建模软件。该模型可以是一个“关系型”模型,但它也可以是命令和事件的模型。

a recent interview中,Eric Evans解释说他不想再强调战术模式(聚合根,存储库,抽象工厂)等,而是强调建模的方法 - 例如有界背景

他还解释了CQRS +事件采购如何将DDD置于全新的视野中。在许多方面,战术模式是过去的残余,其中一切都必须是OOP和底层关系数据库才能被认真对待。就在那时,但现在就是这样。

答案 1 :(得分:2)

听起来你的命令处理程序可能有点太多了。需要明确的是 - 命令处理程序的作用是接收命令,加载适当的聚合并将命令发送到聚合中。最后,它抓取聚合可能生成的任何事件持续存在并最终发布它们。这是我在博客上的图表。

CQRS And ES Overview

有关典型CQRS + ES应用程序的更全面的逐步概述,请查看我的帖子:CQRS + Event Sourcing - A Step by Step Overview

我希望能为你解决一些问题。 PS。您可能想要了解如何为CQRS和ES创建聚合根。您可以找到帖子here

答案 2 :(得分:0)

EventSourcing很简单,您可以选择存储应用程序的状态。如果您没有解决特定问题,则可能不需要域的模型,只需创建一个简单的CRUD应用程序即可。域模型是域的简化抽象,您的应用程序正在解决特定的业务问题。域模型是您和您的团队成员以及域专家之间进行通信的工具。我建议您阅读this优秀书籍,或将this简短介绍下载到域驱动设计。