具有事件溯源的领域模型
Domain Model with Event Sourcing
愚蠢的问题...但是如果我使用事件溯源,为什么我还需要域模型。
我有(当然是事件总线)和
- 具有业务操作的应用程序服务,每个服务在基本验证后发送一个命令
- 接收命令的命令处理程序执行额外的命令验证并发布事件
- 处理事件、更新读取模型并将事件存储在存储库(事件源)中的事件处理程序
- 提供读取模型的读取模型服务
- 使用读取模型服务中的读取模型的前端(UI 或其他)...并利用应用程序服务进行业务操作。
为什么我需要聚合根和域实体?附加层的作用是什么?
听起来您在命令处理程序中可能做的有点太多了。需要明确的是——命令处理程序的作用是接收命令、加载适当的聚合并将命令发送到聚合中。最后,它获取聚合可能生成的任何事件,将它们持久化并最终发布它们。这是我博客上的图表。
要更全面地逐步了解典型的 CQRS + ES 应用程序,请查看我的 post:CQRS + Event Sourcing - A Step by Step Overview
我希望这能为您解决一些问题。
PS。您可能想看看如何为 CQRS 和 ES 创建聚合根。可以发现 post here
EventSourcing 很简单,您可以选择如何存储应用程序的状态。如果您不是在解决特定问题,您可能不需要领域模型,只需创建一个简单的 CRUD application. A domain model is a simplified abstraction of the domain in wich your application is solving a specific business problem. The domain model is tool for communicating between you and your team mates and the domain experts. I would recommend reading this excellent book, or downloading this 领域驱动设计的简短介绍。
你不知道。
领域驱动设计是关于使用领域专家普遍使用的语言对软件进行建模。该模型 可以 成为 'relational' 模型,但它同样可以成为命令和事件的模型。
在 a recent interview 中,Eric Evans 解释说他希望不再强调战术模式(聚合根、存储库、抽象工厂)等,而是强调建模方法 - 例如限界上下文。
他还解释了 CQRS + 事件溯源如何让 DDD 焕然一新。在许多方面,战术模式是过去的残余,在过去一切都必须是 OOP 和底层关系数据库才能被认真对待。那是过去,但现在是。
愚蠢的问题...但是如果我使用事件溯源,为什么我还需要域模型。
我有(当然是事件总线)和
- 具有业务操作的应用程序服务,每个服务在基本验证后发送一个命令
- 接收命令的命令处理程序执行额外的命令验证并发布事件
- 处理事件、更新读取模型并将事件存储在存储库(事件源)中的事件处理程序
- 提供读取模型的读取模型服务
- 使用读取模型服务中的读取模型的前端(UI 或其他)...并利用应用程序服务进行业务操作。
为什么我需要聚合根和域实体?附加层的作用是什么?
听起来您在命令处理程序中可能做的有点太多了。需要明确的是——命令处理程序的作用是接收命令、加载适当的聚合并将命令发送到聚合中。最后,它获取聚合可能生成的任何事件,将它们持久化并最终发布它们。这是我博客上的图表。
要更全面地逐步了解典型的 CQRS + ES 应用程序,请查看我的 post:CQRS + Event Sourcing - A Step by Step Overview
我希望这能为您解决一些问题。 PS。您可能想看看如何为 CQRS 和 ES 创建聚合根。可以发现 post here
EventSourcing 很简单,您可以选择如何存储应用程序的状态。如果您不是在解决特定问题,您可能不需要领域模型,只需创建一个简单的 CRUD application. A domain model is a simplified abstraction of the domain in wich your application is solving a specific business problem. The domain model is tool for communicating between you and your team mates and the domain experts. I would recommend reading this excellent book, or downloading this 领域驱动设计的简短介绍。
你不知道。
领域驱动设计是关于使用领域专家普遍使用的语言对软件进行建模。该模型 可以 成为 'relational' 模型,但它同样可以成为命令和事件的模型。
在 a recent interview 中,Eric Evans 解释说他希望不再强调战术模式(聚合根、存储库、抽象工厂)等,而是强调建模方法 - 例如限界上下文。
他还解释了 CQRS + 事件溯源如何让 DDD 焕然一新。在许多方面,战术模式是过去的残余,在过去一切都必须是 OOP 和底层关系数据库才能被认真对待。那是过去,但现在是。