どのコンテキストについて話しているのか正確にはわかりませんが、C# 5 のasync
/await
機能は、この種のことをサポートするのに既に役立ちます。違いは、node.js ではすべてがデフォルトで強制的にシングル スレッド化されるのに対し (私が理解しているように、コメント内のリンクが誤って与えられている可能性が非常に高い)、非同期を使用する .NET のサーバー側アプリケーションは、非同期のスレッドをほとんど使用しないことです。それに自分自身を制限します。本当にすべてが1 つのスレッドで処理できるのであれば、その可能性は十分にあります。物理的な処理に関して複数の処理を行う必要がないのであれば、それで問題ありません。
しかし、あるリクエストが来て、別のリクエストがちょっとした作業をしているときにどうなるでしょうか? ほんの少しの暗号化などを行っているのかもしれません。最初のリクエストが完了するまで 2 番目のリクエストを待機させますか? もしそうなら、単一スレッドのスレッドプールに関連付けられた .NET でそれをかなり簡単にモデル化できTaskScheduler
ます... しかし、より一般的には、.NET に組み込まれているスレッドプールを使用します。同時実行を許可します。
まず、.NET 4.5 を使用していることを確認する必要があります。これには、以前のバージョンの .NET よりもはるかに多くの非同期 API (データベースやファイル アクセスなど) があります。Task-based Asynchronous Pattern (TAP)に準拠した API を使用したい。次に、async/awaitを使用して、同期コードのように読み取りますが、実際には非同期で実行されるように、サーバー側コードを記述できます。たとえば、次のような場合があります。
Guid userId = await FetchUserIdAsync();
IEnumerable<Message> messages = await FetchMessagesAsync(userId);
これらの各操作が行われるまで「待機」する必要がありますが、スレッドをブロックせずに待機します。C# コンパイラは、ステート マシンの構築を処理します。頻繁にスパゲッティ コードになるコールバックを明示的に記述する必要はありません。コンパイラがすべて行います。
使用する Web/Web サービス フレームワークが非同期性をサポートしていることを確認する必要があります。残りの部分は、可能な限り少数のスレッドを使用して管理する必要があります。
上記の 2 つのリンクをたどって、C# 5 での非同期サポートの詳細を確認してください。これは大きなトピックであり、後でさらに質問があると思いますが、もう少し詳しく読んだら、質問できるはずです。現在の幅広い質問ではなく、非常に具体的な質問。