同じことをする2つのコントローラ(意図的に非常に遅いネットワークコール)を持つ.Net Web APIを作成しました。 1つは同期し、1つは非同期です。非同期コードハンドルの負荷が軽いのはなぜですか?
var content = await client.DownloadStringTaskAsync(url);
var content = client.DownloadString(url);
非同期
同期: https://github.com/jkruer01/SyncVsAsync
2つのコントローラ間の重要な違いは、Webクライアントを使用してコードのこの一行は、次のとおりです。あなたはここにコードを見つけることができますかなり基本的なもの...
次に、コンソールアプリケーションを作成して、同時または非同期コントローラへの同時リクエストを50回発生させます。私は非同期コントローラがより多くの同時リクエストを完了することを期待しましたが、正反対のものが真であることがわかりました。同期コントローラは、約50分の50を正常に完了しました。非同期コントローラは50のうち約10だけを正常に完了しました。
これはなぜですか?非同期コードの目的は、より多くの同時リクエストを処理できることだと思いました。
私は困惑。
この制限は、同時に複数の要求を処理するのに問題がある「サーバー」上にある可能性があります。 – JanR
ここにコードの関連部分を掲載してください。あなたのコードを検索するように人々に依頼するのは公正ではありません。問題を特定の領域に絞り込み、ここに貼り付けます。 – CodingYoshi
私は混乱しています。あなたのスピードについて話している質問のタイトルでは、あなたは成功/失敗の違いについて話しています。いくつかのコメントと結果でコードの関連部分を貼り付けることができますか? – agfc