15

我在我的应用程序中实现了事件溯源和 CQRS 模式。我受到CQRS 之旅的启发,我下载了示例代码。在那里,我找到了事件溯源的整个基础设施(CommandHandlers、EventHandlers、事件、信封......等),但它的代码量非常大,我无法想象我需要所有代码来进行简单的事件溯源。

您是否知道一些经过测试的常见库/nuget 包/项目,其中包含用于发送/注册命令、事件以及我在事件源模式中需要的所有基础设施?还是我应该自己实施?

4

5 回答 5

17

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

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

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

欢迎任何贡献或评论!

于 2018-11-13T22:50:38.587 回答
10

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

NEventStoreEvent Store是两个众所周知的事件存储。

作为我自己经验的旁注,即使您使用现有的 ES,也不要低估在基础设施代码上投入的时间。

于 2015-07-18T10:20:45.367 回答
3

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

https://github.com/gregoryyoung/mr

于 2015-07-17T22:05:28.063 回答
1

我最近开源了一个事件溯源(数据库)框架的 Java 实现,Eventsourcing for Java。但是,计划是在未来有多种语言实现,包括 .NET。这就是为什么一直在努力指定基本原理的原因。

我的实现更侧重于通过惰性“读取端”而不是每个事件的主动应用程序来忠实地捕获命令/事件。

于 2016-05-16T18:33:07.150 回答
0

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

于 2016-03-30T14:06:04.887 回答