Webサービス、データベース、ファイルルックアップなどの複数のソースからデータを集約し、結果をビューに渡すコントローラアクションがあります。したがって、ページをレンダリングするには、すべてのタスクが完了していなければなりません。現在、これらは順番に実行されていますが、独立しているため、パフォーマンスを向上させるために、それらを並列に実行することを検討しています。ASP.NET MVCと長時間実行するアクション
これを達成するための最良の方法は何でしょうか?タスクごとに新しいスレッドを開始し、すべてのタスクが終了したのでメインスレッドをブロックしますか?スレッドプールからスレッドを使用するか、手動で新しいスレッドを生成する必要がありますか?スレッドプールのスレッドを使用すると、Webサーバーの新しい要求を処理する能力が制限されるため、これは良い考えではないかもしれません。新しいスレッドを手動で生成するのは高価なものになる可能性があるので、一日の終わりにこれらのタスクを並列化するか、または順次実行させるだけでパフォーマンスが大幅に向上しますか?
ページがロードされた後、リクエストが処理されていることをユーザーに伝えながら、AJAXコール(またはコール?)でデータを取得するオプションはありますか?ユーザーが何か起きていることを示すメッセージが表示され、その要求がまもなく返されると、ユーザーはもっと待つことになります... –
AJAXを使用することはできません。これらのタスクから返された結果によってインターフェイスが完全に条件付けられます。 、ページの領域を表示するかどうかを指定します。 –
おそらく、非同期コントローラがあなたを助けてくれるでしょうか?タスクのように聞こえるのはほとんどがI/O境界です。 – bzlm