0

バックグラウンドで時折更新される可能性のある大量のデータ セットがあります。独学の実験として、私はフレームワークに依存したくありません。現在、DDD/CQRS コンテキスト内で MVC/MVVC パターンを使用して適切な場所を見つけようとしています。

テーブルにデータを入力するために、大規模なデータ セットのクエリを実行し、結果を表示される行数の 2 倍に制限します。ユーザーがクエリの半分を超えてスクロールしたら、結果の次のバッチをクエリします。

ユーザーがスクロールすると、すべての結果が配列に読み込まれます。表示されていない行を破棄することなく、プログレッシブ ロードのみが行われます。

ドメイン オブジェクトに変換された結果の配列を作成するのは誰ですか? MVC のモデルまたはデータ リポジトリのモデルは?

理想的には、クエリ結果を制限することを常に気にせずに、MVC モデルを再利用したいと考えています。

バックグラウンドでデータが更新されると、システム イベントが作成されます。ただし、新しい行が作成された場合、クエリを破棄してテーブルをリロードするだけでなく、アプリケーションで新しい行のバックグラウンド挿入をアニメーション化する必要があります。そのような場合、バックグラウンド プロセスが現在のクエリのコピーをロードし、それを既存のクエリと比較する必要があると思います。新しい行の位置で「新しい行システム イベント」を作成する必要があります。

挿入ポイントと削除ポイントを計算するために、現在のクエリ結果を以前の結果と比較する必要があるコンポーネントはどれですか? システムサービス?MVC モデル?

私の最後の懸念は、データがバックグラウンドで更新されている場合、複数の制限されたクエリで一連の行をロードすると、一貫性がなくなる可能性があることです。この一貫性をどのように/どこで強制する必要がありますか?

4

1 に答える 1

1

CQRS と DDD = 1 つのドメイン モデルと少なくとも 1 つのクエリ モデル。さて、DDD を、多くのルールが破られて DDD の公敵第 1 位になるものと考えないのは、あなた自身の利益のためです。

少し考えてみましょう。ドメイン オブジェクトが更新され、ドメイン イベントが発行されると、クエリ モデルを更新するイベント ハンドラーが作成されます。UI (ビュー モデル) に必要なクエリ モデルはどれですか。

クライアント UI は、一定の間隔で更新を要求する (現在のモデルの日時スタンプを渡す) 必要があります。どの更新もクエリ モデルの一部です。何が変更されたかを検出するために、更新には現在表示されているものと比較される日時スタンプが必要です。Web アプリの場合は、angularjs.org のような js フレームワークを使用することを強くお勧めします。

さて、このシナリオの MVC モデルはクエリ リポジトリです。行を挿入/編集する場合、モデルはドメインを更新するサービス (ま​​たはコマンド ハンドラー) になります。ドメインの変更とクエリ モデルの生成に関連するものはすべて、サービス/アプリケーション (好きなように呼んでください) レイヤーの一部として、UI の外側にあります。

于 2013-10-25T09:15:52.107 に答える