事件溯源基础设施实现

本文关键字:实现 基础设施 溯源 事件 | 更新日期: 2023-09-27 18:03:24

我在应用程序中实现了事件溯源和CQRS模式。我受到CQRS旅程的启发,在那里我下载了示例代码。在那里,我发现了整个事件源的基础设施(CommandHandlers, eventandlers, Events, envelope……)等),但这是相当大的代码量,我无法想象我需要所有的代码为我的简单事件源。

你知道一些常见的测试库/nuget包/项目包含所有的基础设施发送/注册命令,事件和一切我需要在事件源模式?或者我应该自己实现它?

事件溯源基础设施实现

我来介绍一下。net Core 2。基于x的事件源框架:https://github.com/jacqueskang/EventSourcing/

它为实现事件、事件源实体、实体存储库和几个简单的事件存储提供了基类,以将事件持久化到文本文件或数据库中(使用EF Core)。

它特别容易集成到ASP中。NET Core web应用程序,我这里有一个非常简单的演示。

欢迎任何贡献或评论!

一般建议不要编写自己的事件存储。当然,您可以编写自己的ES,但仅用于教育目的。对于生产系统,我建议您使用现有的ES。起初,它可能看起来像很多不必要的基础架构代码,但您很快就会注意到您确实需要它。最简单的ES并不难,但一旦你开始处理并发性、性能等问题,它就会变得更加复杂。

NEventStore和EventStore是两个众所周知的事件存储。

作为我个人经验的旁注,即使使用现有的ES,也不要低估在基础架构代码上需要投入的时间。

Greg young创建了一个非常简单的CQRS/ES项目,您可以使用它作为起点。基础设施比CQRS旅程代码简单得多

https://github.com/gregoryyoung/m-r

我最近开源了一个事件源(数据库)框架的Java实现,Eventsourcing for Java。然而,我们的计划是在未来有多种语言实现,包括。net。这就是为什么要持续努力明确基本原则的原因。

我的实现更侧重于忠实的命令/事件捕获,使用懒惰的"读端",而不是主动应用每个事件。

我基于CQRS Journey实现了我自己的事件存储消息传递解决方案。消息持久化位于SQL Server之上。有了它,你可以做更多:-您可以在任何时候订阅流。当你需要一个新的ViewModel用于读端时非常有用。这将使您在读取端具有高可用性。你可以用微服务的方式将你的应用分发到多个节点。-你可以查询你的事件存储,像格雷格·杨的事件存储。