Web サービスを使用している場合、Transmission Control Protocol (TCP/IP)はある程度キューとして機能します。
TCP は、あるコンピューター上の 1 つのプログラムから別のコンピューター上の別のプログラムへ、バイト ストリームの信頼性の高い順序付けられた配信を提供します。
これにより、クライアントがパケット A、B、次に C を送信した場合、サーバーは A、B、C の順に受信することが保証されます。リクエストと同じ順序でクライアントに返信する必要がある場合は、列。
デフォルトでは、ASP.NET ワーカー スレッドの最大数は CPU コアあたり 12 スレッドに設定されています。したがって、デュアル コア マシンでは、一度に 24 の接続を実行できます。計算にかかる時間と「大量のトラフィック」の意味に応じて、さまざまな戦略を試すことができます。
最も簡単な方法は、serviceTimeouts と serviceThrottling を使用して、処理できるものだけを処理し、処理できないものを拒否することです。
それができない場合は、ハードウェアを増やしてください。それが 2 番目のオプションです。
最後に、サービスを完全に非同期にすることができます。
string PostCalc(...)
と の 2 つのメソッドを実装しdouble GetCalc(string id)
ます。パラメータを受け取り、それらをキュー (またはデータベース) に詰め込み、すぐに GUID を返します (私はの代わりにPostCalc
使用するのが好きです)。クライアントは、返された GUID をクレーム チケットとして使用し、数秒ごとに呼び出すことができます。計算がまだ終了していない場合は、REST に対して 404 を返すことができます。計算は、キューを監視する別のプロセスで実行する必要があります。string
Guid
GetCalc(string id)
3 番目のオプションは最も複雑ですが、結果は、着信要求に上限を設定する最初のオプションと同様です。