まず、Node.js はマルチスレッドではありません。これは重要。スレッド化された環境で完全に動作するプログラムを設計するには、非常に才能のあるプログラマーでなければなりません。スレッドはただ難しいです。
適切に設計されていないスレッド化されたプロジェクトを維持するには、神にならなければなりません。非常に大規模なプロジェクトでは、回避するのが難しい問題が非常に多くあります。
次に、プラットフォーム全体が非同期で実行されるように設計されています。すべての IO インタラクションが非同期である ASP.NET プロジェクトを見たことがありますか? 簡単に言えば、ASP.NET はイベント ドリブンに設計されていません。
次に、開いている接続ごとに 1 つのスレッドがあり、全体のスケーリングの問題によるメモリ フットプリントがあります。間違っている場合は訂正してください。ただし、ASP.NET で接続ごとに新しいスレッドを作成しないようにする方法がわかりません。
もう 1 つの問題は、Node.js リクエストが使用されていないとき、または IO を待っているときにアイドル状態になることです。一方、C# スレッドはスリープします。現在、スリープできるこれらのスレッドの数には制限があります。Node.js では、1 つの開発マシンで同時に 10,000 クライアントを簡単に並列処理できます。1 つの開発マシンで 10,000 スレッドを並列処理してみます。
言語としての JavaScript 自体が、非同期コーディングを容易にします。まだ C# 2.0 を使用している場合、非同期構文は本当に苦痛です。多くの開発者は、and をあちこちで定義し、コールバックを使用するAction<>
と、混乱するだけです。Function<>
イベント方式で作成された ASP.NET プロジェクトは、平均的な ASP.NET 開発者には維持できません。
スレッドとコアについて。Node.js はシングルスレッドであり、複数ノードのプロセスを作成することでスケーリングします。16 個のコアがある場合、node.js サーバーの 16 個のインスタンスを実行し、その前に単一の Node.js ロード バランサーを配置します。(必要に応じて、nginx ロード バランサーを使用することもできます)。
これはすべて、最初から非常に低いレベルでプラットフォームに書き込まれました。これは、後で追加される機能ではありませんでした。
その他の利点
Node.js には、上記よりも多くの機能があります。上記は、イベント ループを処理する Node.js の方法が、ASP.NET で非同期機能を使用して処理するよりも優れている理由にすぎません。
- パフォーマンス。これは速い。本当に速い。
- Node.js の大きな利点の 1 つは、その低レベル API です。あなたは多くのコントロールを持っています。
- HTTP サーバー全体をコードに直接統合してから、IIS にアウトソーシングします。
- nginx と Apache の比較全体があります。
- C10K チャレンジ全体はノードによって適切に処理されますが、IIS では処理されません。
- AJAX と JSON の通信は、自然で簡単に感じられます。
- リアルタイム通信は、Node.js の素晴らしい点の 1 つです。それはそれのために作られました。
- ドキュメントベースの nosql データベースとうまく連携します。
- TCP サーバーも実行できます。ファイル書き込みアクセスが可能で、サーバー上で任意の UNIX コンソール コマンドを実行できます。
- CouchDB や map/reduce などを使用して、javascript でデータベースにクエリを実行します。クライアントは JavaScript で記述します。Web スタックでの開発中にコンテキスト スイッチはありません。
- コミュニティ主導のオープンソース モジュールの豊富なセット。node.js のすべてがオープン ソースです。
- フットプリントが小さく、依存関係がほとんどありません。自分で node.js ソースをビルドできます。
Node.js の欠点
それは難しい。若いです。熟練したJavaScript 開発者として、Node.js を使用して Web サイトを作成するのは、その低レベルの性質と自分が持っている制御レベルのせいで困難に直面しています。それはCのように感じます。私のために使用されるか、私を吊るすための多くの柔軟性と力。
API は凍結されていません。急速に変化しています。それまでに Node.js が大幅に変更されるため、大規模な Web サイトを 5 年で完全に書き直さなければならないことは想像に難くありません。node.js Web サイトのメンテナンスは安くはないことに注意する必要があります。
参考文献
http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/
http://blip.tv/file/2899135
http://nodeguide.com/