エンティティナビゲーションプロパティは、WCFサービスでプリロードまたは怠zy-ロードされるべきですか?
-
28-10-2019 - |
質問
WCFサービスで自己追跡エンティティを使用しています。エンティティは、ナビゲーションプロパティをロードせずにクライアントに返送されます。
すべてのナビゲーションプロパティを一度に送信するか、必要に応じて怠zyなロードをする方が良いアイデアですか?怠zyがロードされている場合、それらを非同期にロードすることをお勧めしますか?私がこれまでに持っているすべてのWCFサービスコールは、待ち気/Asyncキーワードを使用しています。
一部のオブジェクトには、常に使用されていないナビゲーション特性がたくさんあるため、それらをすべて一度にロードすることに懸念があります。たとえば、消費者エンティティには現在約20があり、より多くのことを得ることが期待されています。いくつかの例には、住所、電話、ドキュメント、メモが含まれます。ユーザーは独自の作業エリアをセットアップできるため、消費者がロードするときにドキュメントを使用する人が常にドキュメントプロパティを必要とする場合がありますが、ほとんどの人はそうしません。
解決
それは本当にエンティティの使用方法に依存します。最も費用がかかるのはサービスへの往復です。そのため、ほとんどのシナリオで使用されるナビゲーションプロパティがある場合は、それらをロードすることができますが、「Lazy Loading」を使用することもあります。あなたの質問に対する本当の答えは、あなたのアプリケーションとパフォーマンステストのいくつかの重要な分析によってのみ提供できます。
私が少し恐れているのは、そのようなモデルを更新する方法です。関連するすべてのエンティティをロードして、それらから1つのオブジェクトグラフを作成したら、グラフの一部をサービスに戻すことができますか?私はあなたができないと思います。
編集:
私はあなたの他の質問を「ダイナミックUI」で読みました。したがって、ユーザーがアプリケーションを起動すると、おそらくUIウィジェットが表示されるべきかを知っているでしょう。現在開いているウィジェットに必要なすべてのナビゲーションプロパティの説明を渡す最初の方法を公開し、新しいウィジェットが開かれたときに他のプロパティをロードすることができます。ウィジェットを追加するには、データを取得するのに時間がかかります。それでも、いくつかの小さなナビゲーションデータを自動的に含めることができます。