ASP.NET (MVC ではない) と .NET v4 (v4.5 ではない) を使用して Web アプリケーションを作成しています。
表示する必要があるデータの一部をサードパーティの Web サービスから取得していますが、そのメソッドの 1 つが完了するまでに長い時間 (数秒) かかります。フェッチ/プリフェッチされる情報は、ユーザーの最初の要求によって異なります (ユーザーごとに異なるオブジェクトの詳細を要求するため)。
シングルユーザーのデスクトップ アプリケーションでは、次のことが考えられます。
- UI をできるだけ早く表示する
- 非 UI バックグラウンド タスクで事前に情報をフェッチする
- したがって、ユーザーが UI をドリルダウンして要求するまでに、データのフェッチ済みまたはキャッシュ済みのバージョンがあることを願っています。
ASP.NET を使用して同様のことを行うには、次のことができると思います。
- BackgroundWorker を使用し、Session インスタンスをパラメータとしてワーカーに渡します
- ワーカーのタスクが完了すると、取得したデータをセッションに書き込みます
- タスクが完了する前にユーザーのデータ要求が到着した場合は、タスクが完了するまでブロックします
問題を予測できますか、改善を提案できますか?
[ASP.NET とバックグラウンド タスクに関する StackOverflow に関する他の質問がありますが、これらはすべて、セッション固有のデータではなく、グローバル アプリケーション データのフェッチと更新に関するものであるようです。]