0

ASP.NET MVC の AsyncController について学習し、TPL で使用していますが、その必要性を理解するのに苦労しています。電子メールの送信などを行うためにアクションを非同期で実行する必要がある場合は理解できます。しかし実際には、アクションからビューを返すためにそれを使用することはありますか?

たとえば、アクションが非同期に動作するように設定されているデータベースからデータを取得し、ビューを返す場合、データを時間内に取得できなかった場合、モデルにデータがない状態でビューが返されるだけではありませんか?

4

2 に答える 2

3

アクションからビューを返すためにそれを使用することはありますか?

ASP.NET における非同期の主な利点は、スケーラビリティです。非同期作業が実行されている間、スレッドは消費されません。これは、アプリケーションが消費するメモリが少なくなり、高速になる可能性があることを意味します。

データが時間内に取得できなかった場合、ビューはモデルにデータがない状態で返されるだけではありませんか?

それはあなた次第であり、その失敗をどのように正確に処理するかによって異なります。

于 2013-03-29T22:08:39.573 に答える
2

非同期コントローラーは主に、現在のスレッド プール スレッドを放棄して、長時間実行されているプロセスが完了するのを待っている間に、他の着信接続が作業を処理できるようにするために使用されます。

これは、ビューを戻すこととは関係ありません。プロセスはエンド ユーザーの観点からは引き続き「ブロック」されますが、サーバー上では、サーバーが着信要求に応答するために必要なリソースは消費されません。

デフォルトでは、IIS ワーカー プロセスには CPU コアあたり 250 のスレッド プール スレッドがあり、着信接続に応答します (これは調整できますが、一般的には何をしているのかを知っておく必要があります)。長いリクエストが完了するのを待っている人がいる場合、そのうちの1つが完了するまで、他の誰もあなたのサーバーに接続できません. 非同期コントローラーはその問題を解決します。

非同期コントローラーを使用する場合、CPU バウンドの作業を専用スレッドにオフロードすることもできます。これは、同期コントローラーではより困難でした。また、タスクを並行して実行できます。たとえば、10 の Web サイトにアクセスしてデータを取得する必要があるとします。ほとんどの時間は、これらの Web リクエストが返されるのを待つことに費やされます。非同期処理を行っている場合は、それらを並行して実行できます。

于 2013-03-29T22:19:08.190 に答える