この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 20310|答える: 0

[ASP.NET] ASP.NET MVCで非同期コントローラを使用します

[リンクをコピー]
掲載地 2018/04/01 15:20:59 | | |
スレッドプール

私はずっとプロジェクトを非同期に書き直したいと思っていましたが、ASP.NETMVC3は書きにくいです。.NET 4.5や ASP.NET MVCコードは比較的シンプルで、MSはいつもこれを好んでやっているようです。成熟したものは標準化のためにいくつかのバージョンを進化させる必要があります。 なぜMVCで非同期を使う必要があるのか ASP.NET、IISにはユーザーリクエストを処理するスレッドプールがあります。新しいリクエストが来ると、プール内のスレッドがリクエストを処理するスケジュールになります。しかし、並行性が高いとプール内のスレッドはリクエスト数を処理できず、リクエスト処理中はすべてのスレッドが忙しくなり、リクエストを処理するスレッドはブロックされ、リクエストキューが満杯になると他のリクエストにサービスを提供できません。 サーバーはリクエストを拒否し、HTTP 503の忙しい状態に入ります。 ネットワーク操作のように高いレイテンシを扱う場合、ほとんどのスレッドは状態を待って何もしません。そうしたスレッドは非同期プログラミングを使って状態をより有効に活用できます。

非同期処理

例えば、リクエストがネットワーク通話を生成し、完了までに2秒かかる場合、そのリクエストは行われます同期・非同期の両方で実行するのに2秒かかります。 だがしかし非同期通話中、サーバーは最初のリクエストが完了するまで他のリクエストへの応答をブロックしません。 したがって、多くのリクエストが長時間実行の操作を呼び出す場合、非同期リクエストはリクエストのキューイングを妨げる可能性があります。 .NET 4.5では最大スレッドプールが5000で、非同期プログラミングを簡素化するためにawaitとasyncキーワードも.NET 4.5で追加されました。

同期または非同期(MSDNからの抜粋)

  • 通常、シンクパイプラインは以下の条件が満たされた場合に使用されます。
  • 単純な操作か短い実行時間か。
  • 効率よりもシンプルさの方が重要です。
  • この操作は主にCPU操作であり、多くのディスクやネットワークのオーバーヘッドを伴う操作ではありません。 CPUに縛られた操作に非同期操作メソッドを使うことには利点がなく、むしろオーバーヘッドが増えます。

一般的に、非同期パイプラインは以下の条件を満たす場合に使用されます。

  • 操作はCPUに縛られるのではなく、ネットワークバウンドまたはI/Oバウンドです。
  • テストにより、ブロッキング操作がサイト性能のボトルネックであることが示されており、これらのブロッキングコールに非同期手法を用いることで、IISはより多くのリクエストを処理できます。
  • 並列性はコードの単純さよりも重要です。
  • ユーザーが長期実行中のリクエストをキャンセルできる仕組みを提供したいのです。

ASP.NET MVCで非同期コントローラを使用します






先の:WPF mvvm フレームワーク STYLET 文書翻訳および学習教材
次に:[Windows API] C# クエリAPIのコードアシスタント[ソースコード付き]
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com