昨天本來很想去參加HTML5與Node.js在台灣聯合技術小聚,礙於有要事在身無法參加實在可惜,最近剛好看到 Tomasz Janczuk 開發出 iisnode 專案,一整個超強的,可以用非常直覺的方式在 Windows 平台與 IIS 來管理 node.js 應用程式,還能用 WebMatrix 進一步整合開發環境,所以特別撰文告知 node.js 迷這個好消息。 :-)
本篇文章我就不介紹太多關於 node.js 的基本介紹了,有興趣瞭解的人可以參考以下網址:
要在 Windows 安裝 node.js 已經不像以前要先安裝 Cygwin 才能用,現在已經有 Windows 原生版的 node.js 可用,甚至於還有原始碼可下載自行透過 VC++ 來編譯。
不過這都不是我今天想講的重點,今天的重點在於用最懶惰的方式透過 WebMatrix 安裝、設定與執行 node.js 應用程式,步驟有多簡單絕對超乎你的想像! ^_^
步驟一:使用 Web PI 安裝 WebMatrix ( 請參考文章說明進行安裝 )
步驟二:安裝 iisnode for iis 7.x
此步驟安裝好之後會有兩個安裝目錄存放檔案:
- iisnode 主程式與範例程式:%LOCALAPPDATA%\iisnode
- node.js for Windows:C:\Program Files (x86)\nodejs
步驟三:安裝 node.js templates for WebMatrix
安裝完成!
什麼?只有三個步驟? Yes!
以下我們來看看怎樣架設基本的 node.js 開發環境有哪些步驟:
步驟一:開啟 WebMatrix
步驟二:選擇「依據範本的站台」
3. 選取站台範本,在這裡會有兩個跟 Node.js 相關的範本
Empty Node.js Site
此站台範本就是一個很基本的 Hello World 範例,讓你從頭打造 node.js 應用程式!
Node.js Express Site
此站台範本包含了 node.js 的 express module,有個基本的網站開發架構,可以讓你用 MVC 架構來開發 node.js 網站應用程式!
步驟三:執行 node.js 網站
在 WebMatrix 開發工具裡直接按下「執行」按鈕,node.js 網站就跑起來了,如下圖示:
開發環境設定完成!
什麼?只有三個步驟? Yes! 今後你只要直接在 WebMatrix 修改 node.js 的程式碼,然後立即按下「執行」按鈕(或按下 F12 功能鍵),就可以立即看到程式修改後的結果!
其他補充說明
1. 使用 iisnode 執行效能較差,但真的很方便做開發測試。
(相較於 Windows 原生的 node.exe 來執行網站,我實測 RPS 大約差 15 倍之多)
2. 比起直接使用 node.exe 來執行程式,使用 iisnode 還有以下優點:
- 程序管理:由 IIS / IIS Express 幫你管理 node.exe 的執行生命週期,省去管理的麻煩。
(效能問題日後隨著時間演進一定能解決)
- 延展性高:因為 node.exe 一個程序只會用到一個執行緒,所以只能用到一個 CPU 核心的運算能力,像我自己在我的四核心 CPU 的桌機用 ab 做壓力測試時,一個 node.exe 只能用到四分之一的運算資源而已,不過即便如此,我測得的 RPS 竟然還有 7402.03 #/sec 之多!
- 自動更新:使用原生的 node.exe 無法偵測你的 js 應用程式有異動,透過 iisnode 會自動管理 node.exe 的生命週期,當程式有異動時會先消化完尚未處理的要求後自動回收正在執行的 node.exe 程序,並重新啟動一個新的 node.exe 接收新的要求。
- 透過 HTTP 存取偵錯紀錄:撰寫 node.js 時可能會利用 console.log() 方法來寫一些執行時期的紀錄檔,透過 iisnode 可以直接透過 HTTP 存取這些記錄資訊,對於遠端執行的 node.js 應用程式來說非常方便。
- 要搬移現有的 node.js 的程式碼到 iisnode 不需修改太多程式碼,頂多只會需要修改 Listen 的 Port 而已,透過 WebMatrix 管理的話 Port 是透過如下圖的方式管理的:
- 與 IIS 完美結合,連設定 node.js 的執行環境都可以透過 web.config 定義,例如:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<handlers>
<add name="iisnode" path="hello.js" verb="*" modules="iisnode" />
</handlers>
<iisnode
nodeProcessCommandLine="%systemdrive%\node\node.exe"
maxProcessCountPerApplication="4"
maxConcurrentRequestsPerProcess="1024"
maxPendingRequestsPerApplication="1024"
maxNamedPipeConnectionRetry="3"
namedPipeConnectionRetryDelay="2000"
asyncCompletionThreadCount="4"
initialRequestBufferSize="4096"
maxRequestBufferSize="65536"
uncFileChangesPollingInterval="5000"
gracefulShutdownTimeout="60000"
loggingEnabled="true"
logDirectoryNameSuffix="logs"
maxLogFileSizeInKB="128"
appendToExistingLog="false"
/>
</system.webServer>
</configuration>
- iisnode for iisexpress 安裝好之後有包含幾個範例程式位於 %LOCALAPPDATA%\iisnode\www,你可以利用 WebMatrix 開啟該目錄,即可執行這些範例 node.js 程式:
相關連結