CQRS 設計アプローチ (パターンとアーキテクチャ) を学習して新しいプロジェクトに適用しようとしていますが、重要な部分が欠けているようです。
私のクライアント アプリケーションはクエリを実行し、読み取りモデルから軽量の読み取り専用 DTO のリストを取得します。ユーザーはアイテムを選択し、ボタンをクリックしてアクションを開始します。アクションは、対応するコマンド オブジェクトを作成して書き込みモデルに送信することによって実行されます (コマンド ハンドラーがアクションを実行し、データ ストアを更新するなど)。しかし、ある時点で、変更を反映するために UI を更新する必要があります。アクションの結果としてのアプリケーションの状態。
UI は、元のリストを更新する時期をどのように認識しますか?
追加情報
CQRS について説明しているほとんどの記事やブログでは、例として MVC クライアント アプリが使用されていることに気付きました。私は現在、Silverlight クライアントに取り組んでおり、その場合、パターンが単に機能しないのではないかと考え始めています。
フォローアップの質問
Bartlomiej の応答とその後の議論についてさらに考えた結果、CQRS でのエラー処理について疑問に思いました。コマンドが基本的に起動して忘れる非同期操作であることを考えると、エラー状態を UI に報告するにはどうすればよいでしょうか?
「UI の更新」が次の 2 つの形式のいずれかであることがわかります。
- 操作が成功し、データが変更されたため、これらの変更を反映するように UI を更新する必要があります
- 操作は失敗し、データは変更されていませんが、ユーザーには失敗と潜在的な修正アクションが通知される必要があります。
MVC で Post-Redirect-Get パターンを使用しても、操作の結果がわかるまで実際にリダイレクトすることはできません。私がこれまで見てきた例のどれも、これらの現実世界の問題に対処していません。