最近在做一些Web方面調研的時候我基本上都不用 IIS了,IIS Express 實在是很方便,由於目前還是 BETA版本,有些功能介面上還看不見,網上資料也很少,所以我把我之前的一點經驗寫出來。
關注 IIS Express 的最初原因是希望將我們的一個產品部署到 Windows XP Professional上,要知道 2003 Server的價格和 Pro差距還是很大的,對於大批量部署的產品來說,這對產品利潤影響相當大。由於我們在開發時使用了 MVC,這個在 XP Pro內建的 IIS5.1上部署,一方面程式要做相應的處理,還需要部署 URL Rewriter之類的東西,相當麻煩,解決了伺服器費用,只怕又會帶來開發人員出差的費用。
有了 IIS Express,問題基本可全部解決,主要關注的是下面的幾個問題:
1. 允許遠端存取
2. 要可以支援建立虛擬目錄
3. 可以支援運行多個 Web Application
4. 我們的產品是在學校的區域網路部署,效能上應滿足至少幾十人並發要求
1. 安裝部署
:http://www.microsoft.com/web/webmatrix/ , IIS Express 是隨 Web Matrix 一起發布的,安裝Microsoft Web Platform Installer 後,就可以選擇安裝 IIS Express(英文版中有 IIS Express可以選擇,中文版中直接選 Web Matrix)。
介紹可參考Scott部落格:http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx
IIS Express overview:http://learn.iis.net/page.aspx/868/iis-developer-express-overview/
從開始菜單運行 Web Matrix 後預設會自動啟動一個Web 網站,管理介面比較簡單,可以直接將某個目錄建立為Web網站。
實際我在使用的時候,基本都是以命令列方式啟動並執行,一般我只用到下面幾個參數:
iisexpress [/config:config-file] [/site:site-name] [/systray:boolean]
設定檔可直接基於預設的設定檔修改, 預設使用的設定檔是在 [我的文件]\IISExpress8\config\applicationhost.config
我現在的用法是直接將 Web Matrix所在目錄打包放到光碟片上,設定檔隨應用程式發布,然後分別建立兩個批次檔,用以啟動和停止IIS Express服務,非常方便,批處理內容大概就像這樣:
啟動:start F:\Projects\MicrosoftWebMatrix\iisexpress /config:F:\Projects\XXX\applicationhost.config /systray:true /site:MTLOralDemo
停止:TASKKILL /F /IM iisexpress.exe /T
其他機器根本不需要再安裝Web Matrix,,只要裝了.Net Framework直接運行就可以了。
2. 遠端存取設定
找到設定檔中 sites\site\bindings 預設是綁定到 localhost 80連接埠,如果需要其他機器可以訪問,綁定到指定IP地址就可以了。
<binding protocol="http" bindingInformation="*:8080:192.168.79.166" />
3. 虛擬目錄設定
類似於下面這樣:
<site name="AppService" id="1280170558">
<application path="/" applicationPool="Clr2IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\IISExpress\DemoApp\empty" />
</application>
<application path="/AppService" applicationPool="Clr2IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\IISExpress\DemoApp\AppService" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:8088:192.168.79.166" />
</bindings>
</site>
我嘗試過多個virtualDirectory節點,但發現Web Application不能正常工作,而且多個虛擬目錄也不是使用獨立的 Web.config,後來通過配置application 解決。
如果網站有Spring之類的東西,運行時會出現錯誤,請將 applicationPool 配置成 Clr2ClassicAppPool。
4. 配置多個網站
多個網站只要配置多個 site 節點就可以了,具體配置都差不多,但多個網站需要使用不同的連接埠。
如果需要同時運行多個網站,在批處理中再增加幾條修改相應的參數就行了,相當於同時運行多個 iis express 執行個體。
5. 效能測試結果
分別做了以下測試,測試結果效能滿足要求:
1. 寫了個簡單測試頁面,使用Load Runner 進行200路並發壓力測試,進行了2小時。
2. 正式產品部署,我們的產品總共運行了9個 iis express進程,分別偵聽在8080~8089連接埠,我們整個部門幾十個人同時類比使用者訪問網站並實際使用。