2012年11月1日木曜日

サーバサイドJavaScript-1

◆Node.jsについて

Node.jsとは,ブラウザGoogle Chrome用に開発されたJavaScriptエンジンV8がサーバ上でプログラムを実行できるように,ファイルやネットワークI/Oなど多くの機能を追加したもの。

軽量で効率よく多くのリクエストを処理するネットワークアプリケーションの構築ができるプラットフォーム

①2つのモデル
・ノンブロッキングI/O
・イベントループ

JavaScriptの1つの特徴にシングルスレッドで動作している。
これはNode.jsでも同様で,デッドロックなどを意識する必要がないが、一度に1つの処理しかできないため複数の処理ができない。
そのためNode.jsではノンブロッキングI/Oを採用
従来型たとえば,データベースにアクセスして検索を実行して結果を取得する。この場合,データベースに問い合わせてから結果が返ってくるまで,待ち時間となる。
一般的にはライブラリなどでデータベースから結果が返るまでの間,呼び出し元の処理をとめている。そのため結果を利用した処理を続けてできます。
ノンブロッキングI/Oは,データベースに問い合わせたら次の処理に移ります。結果の受け取りはコールバックで実現。このように基本的に重い入出力処理は非同期で実行するのがノンブロッキングI/O

イベントループ
さらにリクエストやコールバックの発生はイベントとして扱い(登録し),そのイベントに関する処理が終わったら,次のイベントを処理する。このようなイベントループをNode.jsは採用している。