事件溯源基础设施实施

Event sourcing infrastructure implementation

我在我的应用程序中实现了事件溯源和 CQRS 模式。我的灵感来自 CQRS journey,我在其中下载了示例代码。在那里我找到了事件源的整个基础设施(CommandHandlers、EventHandlers、Events、Envelopes 等),但它的代码量相当大,我无法想象我需要所有代码来实现我的简单事件源。

您是否知道一些经过常见测试的 library/nuget package/project,其中包含 sending/registering 命令、事件以及我在事件溯源模式中需要的所有基础设施?还是应该自己实现?

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

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

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

NEventStore and Event Store 是两个著名的事件存储。

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

我基于 CQRS Journey 实现了 my own event store - messaging solution。消息持久性位于 SQL 服务器之上。有了它,您可以做更多的事情: - 您可以随时订阅流。当您需要一个新的 ViewModel 用于读取端时非常有用。这将使您在读取端具有高可用性。 - 您可以以微服务方式将您的应用程序分布在多个节点中。 - 您可以查询您的活动商店,例如 Greg Young 的活动商店。 - 还有更多...

我最近开源了我的 Java 事件溯源(数据库)框架的实现,Eventsourcing for Java. However, the plan is to have multiple language implementations down the road, including .NET. That's why there's an ongoing effort to specify the fundamentals

我的实施更侧重于使用 lazy "read side" 忠实地 command/event 捕获,而不是主动应用每个事件。

我可以介绍一下这个基于 .NET Core 2.x 的事件溯源框架吗:https://github.com/jacqueskang/EventSourcing/

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

集成到 ASP.NET 核心 Web 应用程序中特别容易,我有一个非常简单的演示 here

欢迎投稿或评论!