Node
09 rdはV8をベースとした軽量なウェブサーバとライブラリ一式を構築します。
Nodeネーミングとソース
なぜJSなのか
ハイパフォーマンスなウェブサーバーを構築する鍵は、JSで自然にサポートされるイベント駆動型の非同期IOです。
なぜNodeというのですか?
Nodeは、Webアプリケーションを構築するための基本的なフレームワークとなります。各 Node はシングルスレッドで単一のプロセスとして動作し、大規模な分散アプリケーションを構築するためのインフラストラクチャを提供します。各 Node プロセスは、大規模な Web アプリケーションのノードとして動作します。
NodeJSへの影響
JSは長い間、ブラウザのサンドボックスに閉じ込められており、以下はブラウザにおけるJSのアーキテクチャモデルです。
WebKitエンジンはUIレイアウト関連を担当します。次に Node のアーキテクチャモデルです。
ブラウザ環境内でのJSの機能はブラウザによって制限されますが、NodeではUI関連の機能以外にも、ファイルを任意に変更するなど、様々なことが可能です。
JSは、ブラウザではイベントドリブンによってインターフェイスと対話する役割を果たし、NodeではIOを提供します。
Node
非同期IO
ブラウザ側のJSと同様にajaxリクエストを起動するには、同じ "私を呼ばないで、私はあなたを呼び出します "特性に沿った買収の値の結果の非同期操作でNodeを。 非同期IO操作の多くの基礎となるカプセル化でNodeは、並列IOの実装です。
古典的な非同期呼び出し(コンピューティング)
イベントとコールバック関数
- 非同期IOを持つノードは、ビジネスロジックにいくつかのイベントポイントを公開します。
- コールバック関数は第一級市民であり、非同期操作から返されるデータを受け取るための最良の方法です。
シングルスレッド
JSのシングルスレッドという性質は、マルチスレッドプログラミングの状態同期やデッドロックの問題に直面する必要がないことを意味しますが、いくつかの欠点もあります:
- 大規模計算のブロック
- マルチコアCPUの利点を生かせない
- プログラムエラー時のアボート、コードのロバスト性をテストする必要があります。
ブラウザ側のJSブロッキングはレンダリングやレスポンスの中断の問題を引き起こし、Node側のJSブロッキングは非同期IOの呼び出しや完了した非同期IO処理のコールバックの実行を継続できない問題を引き起こします。これらのデメリットについては、JSでも同様にブラウザ環境ではWeb Workerを、Node環境ではchild_processを用意し、マルチコアCPUを活用して計算を分解しています。