web-dev-qa-db-ja.com

イベントソーシングインフラストラクチャの実装

アプリケーションにイベントソーシングとCQRSパターンを実装しています。 CQRSジャーニー からインスピレーションを得て、サンプルコードをダウンロードしました。イベントソーシングのインフラストラクチャ全体(CommandHandlers、EventHandlers、Events、Envelopesなど)を見つけましたが、コードが非常に多く、単純なイベントソーシングにすべてのコードが必要だとは思えません。

コマンド、イベント、およびイベントソーシングパターンで必要なすべてを送信/登録するためのすべてのインフラストラクチャを含む、テスト済みの一般的なライブラリ/ nugetパッケージ/プロジェクトを知っていますか?それとも自分で実装する必要がありますか?

15
Jozef Cechovsky

一般的な推奨事項は、独自のイベントストアを作成しないことです。もちろん、独自のESを作成することはできますが、それは教育目的でのみ行ってください。本番システムでは、既存のESを使用することをお勧めします。最初は多くの不要なインフラストラクチャコードのように見えるかもしれませんが、すぐに必要になることに気づくでしょう。最も単純な形では、ESはそれほど難しくありませんが、並行性、パフォーマンスなどの処理を開始すると、さらに複雑になります。

NEventStore および Event Store は、よく知られた2つのイベントストアです。

私自身の経験からの補足として、既存のESを使用している場合でも、インフラストラクチャコードに投資する必要がある時間を過小評価しないでください。

8
user707727

この.NET Core 2.xベースのイベントソーシングフレームワークを紹介します。 https://github.com/jacqueskang/EventSourcing/

イベントを実装するための基本クラス、イベントソースエンティティ、エンティティリポジトリ、およびテキストファイルまたはデータベース(EF Coreを使用)でイベントを永続化するいくつかの単純なイベントストアを提供します。

ASP.NET Core Webアプリケーションに統合するのは特に簡単です。かなり簡単なデモ here があります。

貢献やコメントを歓迎します!

11
Jacques Kang

グレッグ・ヤングは、出発点として使用できる本当にシンプルなCQRS/ESプロジェクトを作成しました。インフラストラクチャはCQRSジャーニーコードよりもはるかにシンプルです

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

1
user4979882

私は最近オープンソース化したmy Javaイベントソーシング(データベース)フレームワークの実装、 Eventsourcing for Java )をオープンしました。しかし、計画は、複数の言語の実装を.NETを含む道路。そのため、 基本を指定 するための継続的な取り組みがあります。

私の実装は、すべてのイベントの積極的なアプリケーションではなく、 lazy "read side" を使用した忠実なコマンド/イベントキャプチャに重点を置いています。

0

私はCQRSジャーニーに基づいて 自分のイベントストア-メッセージングソリューション を実装しました。メッセージの永続性はSQL Serverの上にあります。これにより、さらに多くのことができます。-いつでもストリームを購読できます。読み取り側に新しいViewModelが必要な場合に非常に役立ちます。これにより、読み取り側で高可用性を実現できます。 -アプリケーションをマイクロサービス形式で複数のノードに分散できます。 -Greg Youngのイベントストアのように、イベントストアをクエリできます。 -そして、もっと...

0
Narvalex