0

私の英語でごめんなさい。

以前、この質問を次のように投稿しました。複数のViewModelが同じドメインオブジェクトを要求します。同じ/異なるインスタンスを指定する必要がありますか?

これについて調査したところ、前の質問がわかりにくいことに気づいたので、この新しい質問を投稿します。

10億人の情報を管理するWPFデスクトップアプリケーションを構築したいとします。エンドユーザー(me)は1人だけで、すべてのデータはローカルマシン(SQL Server / MySQL)に保存されます。Visual Studio、Autofac、NHibernateを使用して、MVVM、DI、DDDパターンを実装してみます。

同じ人物をUIのどこにでも同時に表示できます:複数のウィンドウ、タブ、リスト、コンボボックス、テキストブロック...各リストには数千人の人物を含めることができ、アプリケーション全体には10〜100のリストを含めることができます。また、リストの内容(人)は頻繁に更新されます。リストの設定を変更するたびに、リストは空になり、さらに数千人の新しい人でいっぱいになります。

問題は次のとおりです。1つのリストで人を変更した場合(名前の変更など)、他のすべてのリストに変更を適用するにはどうすればよいですか?

この問題を解決するには2つの方法があると思います。

  1. 各人に対して、アプリケーション全体で単一のインスタンスを使用します。これを実装するには、アプリケーションを介して単一のUnitOfWorkを使用できますが、このアプローチではメモリリークが発生するようです。

  2. 各人に複数のインスタンスを使用します(リストごとに1つのインスタンス)。これを実装するには、リストごとに1つのUnitOfWorkを使用する必要があり、人のすべてのインスタンスを同期する方法を見つける必要があると思います。ベリルはイベントアグリゲーターについて言及しました。しかし、誰がイベントを公開して登録する責任がありますか?

私はここで非常によく似た質問を見つけ、次の記事も読みましたが、それでも混乱を感じています。

ありがとう!

4

1 に答える 1

2

セッション間でエンティティインスタンスを共有しないでください。また、デスクトップアプリに単一のセッションを使用しないでください。

通常、 ViewModelは個別のビジネス会話の一部であるため、VMごとに1つのセッションが発生する可能性があります。

各ViewModelは、受け入れるイベントを登録する必要があり、生成したイベントを公開する責任があります。別の方法は、サービス/ビジネスレイヤーレベルでの公開です。自分のアーキテクチャに最適なものを確認する必要があります。

于 2011-02-13T21:08:29.280 に答える