構築中のアプリケーション (複雑なビジネス ロジックを備えたオンライン ディスカッション システム) に CQRS を使用していますが、実装で気になる部分に到達しました。
ページビューをどのように処理すればよいですか? ユーザーがスレッドを表示した場合、それを追跡したいと思います。それを追跡したいので、コマンドとイベントを作成し、これを、表示しているオブジェクト (たとえば、それぞれ UserViewsThread と UserViewedThread) を担当する集約ルートに結び付ける必要があります。しかし、これは非常に非効率的であるように思われます。これ以外に、ディスカッション システム (フォーラム/スレッドの表示) の多くのユース ケースで集約ルートに到達する理由はありません。これを導入したので、ページのすべてのビューで追加のコマンド ディスパッチとイベント パブリッシュを行います。これは、スレッド集約の「スプールアップ」、イベントのシリアル化、およびイベントへの送信を担当します。出版社。
これを行うためのより良い方法が必要です。おそらく、コントローラー オブジェクトがイベントをディスパッチできるようにすることを考えていましたが、集約をバイパスすることで、動作をページビューに関連付けることができなくなりました。
もう 1 つの可能性は、ユーザーを認証する方法としてこれを使用するという考えです。UserViewsThread および UserViewsForum コマンドは、認証例外をスローして、ユーザーがこのアクションを実行できないことをコントローラーに知らせることができます。しかし、これらがイベントに変換され、私のイベント ストアに格納された場合、ページ ビューごとに作成された複数のイベントについて話していることになります。これは、パフォーマンスを非常に損なう可能性があります (ページ ビューごとにデータベース トランザクションが発生します...うーん)。そしてリソース管理。
あなたの彼の考えは何ですか?