6

私が読んだことによると、CQRS の設計には、コマンドがキューに入れられる非同期コマンドが含まれます。ユーザーは、すべて問題がないと想定し、UI ポーリングまたはタイマーを介して、すべてが機能したかどうかをフィードバックします。

ツリー内のフォルダをドラッグする UI がある場合、これはどのように機能しますか? あるユーザーがフォルダーを削除している間に、別のユーザーがフォルダーをそのフォルダーにドラッグすることができます (そのサブフォルダーにするため)。

したがって、UIからドラッグが行われたことを示すことができ、次にいくつかのタイマーチェックで読み取りモデルが更新されたかどうかを確認できます(つまり、ドラッグされたフォルダーの親フォルダーをチェックし、正しく設定されているかどうかを確認します) )。

ユーザーが多数のドラッグ操作を行った場合、UI でこれらの操作のリストを保持し、読み取りストアをチェックする必要があります (成功したコマンドをリストから削除します)。

これを行うためのより良い方法があるかもしれません。

UI での作業が多く、エラーが発生しやすいように見えますが、同期コマンドを実行しただけで問題がなければ、次の操作に進みます。

4

2 に答える 2

5

同期コマンドを使用できますが、説明している問題がそれほど問題になることはありません。ユーザーに通知するときの動作がわずかに異なるだけです。

コマンドについて理解しておくべきことは、それらがドメイン オブジェクトによって拒否される可能性があるということです。この場合、最初のユーザーが変更を行い、次に 2 番目のユーザーが行った変更が、無効な状態を参照しているため拒否される可能性があることを意味します。

システムの現在の状態をすべてのユーザーに提示したい場合、UI はとにかく関心のあるすべての作業を行う必要があります。これは、CQRS に固有のものではありません。

于 2012-06-24T16:24:06.110 に答える
3

同期コマンドをうまく使用できます。CQRS には非同期コマンドは必要ありません。

于 2012-06-24T15:21:15.820 に答える