4

CQRS 設定でのロギングの処理方法を理解しようとしています。状況は次のとおりです。

  • Rx ベースのイベント ブローカーがあります。
  • Foo.Eventsイベントが継承されるプロジェクトがありEventArgs(理由は不明)、それに応じてブローカーはすべてのイベントがこのクラスから継承されることを期待しています。
  • いくつかのサブシステム (DI で初期化) をログに投稿しています。
  • ロギング要求を処理し、それに応じて処理するためにいくつかのサブシステムが必要です (画面に表示し、xmpp/sms などを送信します)。

今、私はこれにログインする方法を見つけようとしています。CQRS では、ロギングはそれ自体がイベントではなく、イベントに対するシステムの応答であるように思えます。一方、ログ要求はコマンド、つまり CQRS の C のように見えます。

どうにかしてこれをイベント ブローカーに入れたいのですが、よくわかりません。いずれにせよ、コマンドはイベント ブローカに属しますか? ブローカは、C か Q かをあまり気にしない単なるメッセージング システムであると想定できますか?

あなたの助けは大歓迎です!

4

2 に答える 2

3

ロギングはインフラストラクチャの問題です。コマンドとイベントは (通常) ビジネスに関連しています。ロギングは必要なときに行われ、技術的な実装はユーザー次第です。コマンドでもイベントでもありません。これらのいずれかが発生したことを記録します。実際、特定のクエリをログに記録したい場合もあります。

イベントをイベント ログ (またはイベント ストア) に保存し、ログとして使用できます。コマンドや特定のクエリを記録する必要がある場合は、コマンド ハンドラーとクエリ ハンドラーをログ ハンドラーでラップすることもできます。

于 2013-07-12T17:09:02.137 に答える
2

さまざまなコンテキストでさまざまな方法でマニフェストをログに記録します。CQRS では、ドメイン イベントのストレージは監査ログと見なすことができます。また、技術的なシステム イベントをログに記録するアプリケーション/インフラストラクチャのログを記録することもできます。これらは通常、別の場所に保存され、ほとんどが書き込み専用です。.NET では、log4net や NLog などのフレームワークを使用して、技術的なシステム イベントのログを処理します。これらのフレームワークの Rx ベースの実装を作成することはできますが、不必要に複雑になる可能性があります。

また、ログ メッセージをメッセージ キューに置くこともできますが、それによって何が得られるかはわかりません。インプロセス ブローカーまたは分散型イベント ブローカーですか? 後者の場合、絶対に必要でない限り、私はそれを避けます.

于 2013-07-11T21:22:55.597 に答える