ASP.NET MVCはどのように正しく非同期プログラミング技術を使用します

まず、同期および非同期何ですか?

同期(英語:同期)は、(イベント)間の調整のためのシステムで発生するイベントを意味し、時間の一貫性や現象の統一を表示されます。それは同時に1つのタスクのみの実行で、複数のタスクを一つずつ実行することを意味します。

非同期(英語:非同期)は、現在の要求を棚上げに応答するCPUを指し、次の要求を処理し、それ以外の場合は、ポーリングによってコールバック通知を取得したりするとき、実行するために始めました。マルチスレッドの非同期操作は、ポーリングまたはコールバックメソッド完了通知により得られる別のスレッドに実行されますが、ポートが完了し、非同期操作のスケジューリングは、オペレーティングシステムによって引き継がれ、ない完了コールバックメソッド、上にトリガされる割込みハードウェアあなたは追加のスレッドを取る必要があります。

第二に、ASP.NET MVCは、ときコントローラ我々は、非同期使うべきプロジェクト?

2.1、ASP.NET MVCは、なぜそれが非同期を使用する必要がありますか?

IISは、ユーザの要求を処理するスレッドプールを持って、新しい要求が来たときに、スレッドスケジューリングプールが要求を処理するために、しかし、しかし、高い同時実行の場合には、スレッドプールはとても会いすることができませんプール内の各スレッドがブロックされている要求のスレッドを処理し、要求を処理する際のビジー状態であり、要求キューがいっぱいになった場合、別の要求に対してサービスを提供することはできませんスレッド、Webサーバーが拒否されます多くのリクエストHTTP 503のリクエストとビジー状態インチ それはいくつかの高遅延に対処する場合には、スレッドがより良いテイク有利に非同期プログラミングを使用することができますので、そのようなネットワークオペレーションとして、このスレッドのほとんどはちょうど、ほとんどの時間は何もしない状態を待っています。

第三に、同期および非同期のシナリオの使用

シーンを説明:要求が必要なネットワーク呼び出しを完了するために1秒か2秒を生成する場合は、いずれかの同期または非同期実行を実行するための要求が2秒を要します。しかし、非同期呼び出しの際に、サーバが他の要求への応答をブロックしません最初の要求の完了を待っている間に。操作を長時間実行の番号に電話する要求があった場合そのため、非同期要求はキューに入れられた要求が表示されないようにできます。

シーン記述2:私は持っていると仮定3つの操作に時間がかかる500、600および700ミリ秒です。同期呼び出し、その後、総応答時間は、わずかにより18ミリ秒以下となります。呼び出しは非同期(同時)である場合には、ミッション/操作の最長あるのでしかし、総応答時間は、わずかに多くの700ミリ秒以下となります。従って:アクションが複数の独立したオペレーティング長時間実行を行わなければならない場合に、非同期動作の方法は非常に有用です。

3.1同期パイプライン以下の条件:

1)、操作は非常にシンプルまたは非常に短い動作時間です。

2)、シンプルさが効率よりも重要です。

3)この操作は、主にCPUの動作の代わりに、ディスクまたはネットワーク動作オーバーヘッドを多量に含有します。CPUバウンド動作のための非同期操作法を使用して任意の利益を提供せず、また、より多くのオーバーヘッドが生じます。

 

3.2、以下の条件非同期パイプラインを使用しました:

1)、又は動作はI / Oの代わりにCPUバウンドの結合ネットワークに結合されています。

2)試験は、サイトのブロッキング動作を示したパフォーマンスのボトルネックであり、これらのブロックを使用することによって操作の非同期メソッドを呼び出して、IISは、より多くの要求にサービスを提供することができます。

並列処理は簡単なコードよりも重要です。

3)あなたは、ユーザーが長時間実行要求をキャンセルすることを可能にするメカニズムを提供したいです。

 

四、Q&Aリンク

4.1、それは非常に非同期アプリケーションの応答性を提供することができますので、?その場合は、非同期(非同期使用してASP.NET MVCコントローラのすべての  コントローラ)、どのような影響を?それは、高スループット、並行性の高いサイトになるのだろうか?

ただ、コードの非同期事実はどんなパフォーマンスは改善されません追加し、それは実際のスループットを向上させることができ、必要な(IO)非同期実行は、非同期の場所を必要としています。コントローラは、読み取りや書き込みデータなどの非同期I / O集中型の操作に使用、および操作の間、より独立性; CPU集約型および非同期操作には適用されません - CPUは、最終的にトップに満たされるでしょう、あなたは非同期または同期処理を扱うかどうか。だから、非同期操作は、実際に同時の数を増加させる効果を達成することができますが、特定の使用は、あなたがそれを置く場所によって異なります。コントローラ非同期すべての使用は、サイトのパフォーマンスを向上させることの絶対的な効果に到達していません。

 

おすすめ

転載: www.cnblogs.com/wangyinlon/p/11961530.html