The Will Will Web | ASP.NET 開發人員應使用 IIS Express 進行開發與測試

The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

ASP.NET 開發人員應使用 IIS Express 進行開發與測試

IIS 7.5 Express 是一套針對 ASP.NET 開發人員特別設計的 IIS 7.5 版本,我發現有許多人並不知道他的存在,甚至於不知道何時要使用他,就覺得這只是另一個提供 ASP.NET 執行環境的程式而已,在 Visual Studio 2010/2008/2005 內建的 ASP.NET 開發伺服器 (Cassini) 已經使用很久,用來作為開發測試之用也沒什麼問題,有必要將開發環境的伺服器修改成使用 IIS 7.5 Express 來執行嗎?今天我就提出幾個重要的觀點。

首先,IIS 6 與 IIS 7 在其架構上做出了許多變更,尤其是在要求管線 (request pipeline) 的不同之處,以下列出兩張要求管線的圖示:

IIS 6.0 的要求管線

IIS 7.0 的要求管線

上圖參考至:IIS 6 and IIS 7 - How different are they? 此文章對此架構有詳細說明,另外也建議參考以下文章以進行全盤理解:

如果不講那麼多技術原理,對一般開發人員來說,最明顯的差異就是 ASP.NET 網站根目錄下的 Web.config 檔案,在該檔案中有兩個宣告 HttpModules 與 HttpHandlers 的地方,分別圖示如下:

下圖的 <httpHandlers> 與 <httpModules> 位於 <system.web> 區段下,主要在 IIS 5 / IIS 6 架構下使用

image

而下圖的 <modules> 與 <handlers> 位於 <system.webServer> 區段下,主要是給 IIS 7 / IIS 7.5 架構下會用到,這兩個定義幾乎一樣(當然有些屬性不太一樣),但是卻需要定義兩遍!

image

如果你的網站專案使用 Visual Studio 內建的 ASP.NET 開發伺服器 來執行與測試,那麼你在 <system.webServer> 區段下的所有定義與設定將完全無法測試到,因為 ASP.NET 開發伺服器 完全是以 IIS 6.0 的架構下去執行的,要是你的網站未來的部署環境是 IIS 7.0 / IIS 7.5 的話,那麼這樣的開發環境就不是十分理想。

像我們公司在 IIS Express 尚未推出之前,每一位開發人員都要在 Windows Vista / Windows 7 的本機加裝 IIS 7 並且要為每一個開發中的網站專案特別建立一個站台,人多的時候每個人都要特別教一下才可以將環境完整設定好,可以說是挺不方便的。

但是 IIS Express 又沒有管理界面,使用上其實也不方便,不熟悉 IIS 架構的開發人員使用起來也是會很辛苦的,還好 Visual Studio 2010 SP1 已經正式將 IIS Express 整合進 Visual Studio 2010,也代表著你在 Visual Studio 2010 裡面的網站專案都可以方便的指定使用 IIS Express 來執行網站,操作上已經簡單的無法再簡單。

如下圖就是設定某專案使用 IIS Express 來當成開發伺服器:

第一次使用的時候,由於本機並沒有設定過 IIS Express 的站台,所以會問你要不要裝載上去,回答「是」就對了。如果你的開發團隊有使用到版本控管,當其他成員更新檔案後第一次開啟專案也會出現這個視窗,只要按下「是」就會自動安裝完成,不過前提是大家都要先升級 Visual Studio 2010 版本到 SP1 以及都要額外安裝 IIS 7.5 Express 才行。(備註:這兩個都可以透過 Web PI 來安裝

 

裝好之後還會提示你安裝好的網址與埠號:

不僅僅是 Web 應用程式專案可以用,連 Web 網站專案也都可以改用 IIS Express 當成開發伺服器之用,省去所有 IIS 站台安裝、設定的所有繁複流程。

如果你想將測試的網站部署在虛擬目錄下,也可以在網站專案的專案屬性中修改「專案 URL」的路徑,最後按下「建立虛擬目錄」即可,算是整合的非常好用了。

你可能會問這個 IIS Express 到底跟完整版的 IIS 7.x 有什麼差異呢?我的回答是:幾乎一模一樣,僅差別在 IIS Express 是一個沒有管理界面的 IIS 7 而已!所有在 IIS 7 中能做到的地方,在 IIS Express 一樣都做的到,差別僅在於你要自行設定這些設定而已 (備註:大部分站台設定修改 Web.config 即可,其他設定可以參考 我的文件\IISExpress\config\applicationhost.config 這個設定檔)。

正式環境用 IIS 7 的網站,可以慢慢改成用 IIS Express 來執行了,以我個人的轉移經驗來說,幾乎沒遇到什麼問題,與 IIS 7 相容性非常之高。

相關連結