データレイヤーでTPL非同期を使用する場合Task<T>
、MVCコントローラーでも使用する必要がありますか?
言い換えると、非同期が.NET MVCで機能するためには、より深い実行レイヤーで機能するために、要求が開始された時点から実装する必要がありますか?Task<T>
または、同期コントローラーを使用している場合でも、DAL / Webリクエストレベルで使用することにはメリットがありますか?
データレイヤーでTPL非同期を使用する場合Task<T>
、MVCコントローラーでも使用する必要がありますか?
言い換えると、非同期が.NET MVCで機能するためには、より深い実行レイヤーで機能するために、要求が開始された時点から実装する必要がありますか?Task<T>
または、同期コントローラーを使用している場合でも、DAL / Webリクエストレベルで使用することにはメリットがありますか?
非同期コントローラーを使用しない場合、ある時点でタスクを待機する必要があります。この時点で、ブロックされたスレッドの数を減らすという主な利点はなくなりました。
もちろん、複数の非同期アクティビティを同時に実行する場合、これは当てはまりません。これにより、ブロックされたスレッドの数が N から 1 に減少します。(N = 1 の場合、利益はなく、ダメージのみ)。
デフォルトでは、async は高速ではないことに注意してください。ASP.NET での主な目的は、何百もの同時要求を使用して、最終的にスケーラビリティを獲得することです。そうして初めて、より高速になるか、より高くスケーリングされます。
したがって、同時リクエスト数が「通常の」数 (100 未満など) の場合は、同期してください。このすべてについて心配する必要はありません。