iisnodeプロジェクトは、Internet Information Server 7.0以降にNodeをサポートするモジュールである。IISの主要なロールは、Nodeのアプリケーションサーバーと同じように動作し、クラシックASPとASP.NETとほぼ同じ方式である。これらの技術に精通している開発者は、機能リストを見て、非常になじみがあるものだと理解することができる。
Nodeは、非公式ながらnode.jsとして知られている。これは、非同期プログラミングテクニックを強く協調したJavaScriptベースのサーバサイドフレームワークである。 6月にさかのぼると、NodeとWindowsプラットフォームに移植するため、マイクロソフトはJoynetとの提携をアナウンスしている。ネイティブポートは、非常に些細なことだが、要求されたパフォーマンスを得るために、このプロジェクトではI/O完了ポートのようなネイティブ機能を使うことに重点を置いている。
IISモジュールに戻ると、プロセス管理はセンターステージである。ASP.NETのように、IISはNodeランタイムのインスタンスの開始と終了をハンドルする。Nodeはシングルスレッドで、IISはモニタリングとロードバランシングを複数のNodeインスタンスをまたいで処理する。詳細はまだ提供されていないが、伝統的な論理コアごとにひとつのプロセス/スレッドであると推測できる。
ASP.NETのように、iisnodeはインプレースアップデートをサポートするだろう。新しいバージョンのスクリプトファイルが置かれると、IISは現在実行中のリクエストが完了したら、Nodeプロセスをリサイクルするだけに過ぎない。
NodeはスタンドアロンのWebサーバーとして利用することができるが、それには開発者はビジネスと関係ない多くの処理をする必要がある。誰がきちんとチューニングされたキャッシュとスタティックファイルの圧縮コードに数週間を費やしたいだろうか?その代わりに開発者は、IISの能力の活用と、Nodeの光が当たる領域に注力することができる。
キャッシュや圧縮に加えてNodeは、IISの機能である、ポート共有、セキュリティ、URL rewriting、ロギングを引き継いでいる。これらのいくつかの機能によって、あなたのNodeコードに変更が必要になる。たとえば、アドレスとポート番号をprocess.env.PORT環境変数から読んでいる場合には変更が必要だ。
IISに関して言えば、もちろんいくつかのXML構成を行うことになる。最低限、サーバーサイドJavaScriptファイルをweb.configファイルに登録することだけは必要である。これを怠ると、JavaScriptはクライアントサイドのもののようにIISが提供してしまうことになる。