2012年1月18日

Node.js 與 IIS 初探

Node.js 讓 JavaScript 也能用於網站後端開發,開發人員只要精熟 JavaScript 語言,就能夠輕鬆開發高效能 Web 應用程式。

習慣在 Windows + IIS 工作的朋友,不妨也玩玩看 Node.js。

在 Node.js 官網已經提供安裝程式,包含 NPM(Node.js 的套件管理工具)。

http://nodejs.org/

iisnode 是讓 IIS 管理 Node.js 程式的 IIS 模組,也有很簡便的安裝程式。

https://github.com/tjanczuk/iisnode

關於 iisnode 的使用,請參考原作者這篇。

http://tomasz.janczuk.org/2011/08/hosting-nodejs-applications-in-iis-on.html

給 IIS 執行的 Node.js 程式,和 Node.js 提供的官方範例幾乎沒有差異,唯一的差別只是在 Port 的部份不是直接指定,而是用 process.env.PORT 接收來自 iisnode 動態配給的 Port 代號。

如果要寫出可以同時在 iisnode 模式下自動執行,也可以用 console 模式啓動的 Node.js 程式,方法是 var port = process.env.PORT || 3000; (動態判斷是否有來自 iisnode 指定的 Port,否則就使用靜態指定的號碼)。

在效能的部份,預設模式下,iisnode 執行 Node.js 的「Hello World」程式,和 ASP.NET(.aspx)的 Hello World 相比,似乎沒有顯著差別。

但是可以在 web.config 指定這個參數:
maxProcessCountPerApplication="4"

再做一次負載測試,大多數的情況下,可以發現這個簡單的調校帶來效能不少的增進。

iisnode 會自動管理 Node.js 的 process,但是預設只會啓動 1 個 process,對於 4、8 顆以上核心數目的伺服器來說,在負載高峰期間只會有一個 CPU Core  忙碌,其它 Core 都在睡覺,所以就沒有讓耐操的 Node.js 發揮 Server 的能耐。

但是 process 數量並不是愈多就愈好,一般來說建議可以設定成 CPU Core 的數量,並配合其他參數與壓力測試找出最佳值。設定過低會無法發揮伺服器效能,設定過高則會讓程式競爭資源而導致效能低落。

我有一份簡單的筆記,提供一些簡單的範例,可以參考:

http://lyhdev.com/slide:iisnode

為什麼 Windows + IIS + ASP.NET 的開發者,也要開始學習 Node.js?

原因很簡單,未來應用程式想要上雲端(微軟 Azure 雲),這無疑是一條捷徑,請參考:

https://www.windowsazure.com/zh-tw/develop/nodejs/

目前 NodeJS Taiwan 社群的 Facebook 專頁,已經累積達到 330 人訂閱,這無疑是您追蹤 Node.js 發展的最佳管道,歡迎加入:


http://www.facebook.com/NodeJS.tw

沒有留言:

張貼留言

lyhcode by lyhcode
歡迎轉載,請務必註明出處!