2011年1月15日 星期六

介紹 IIS Express

開發 ASP.NET 的應用程式是我的主要工作。當然我會選擇最適合的開發環境。客戶多屬於企業用戶,我的開發的選擇,多半是 ASP.NET Web Application + SQL Server + IIS。

在內部 Demo 開發技術時,則會偶而使用 Web Development Server 來示範。然而在許多專案上,仍然看到選用 Web Development Server 來開發企業用的程式,雖然知道不妥,也常常宣導,但在 Visual Studio 預設使用 Web Development Server 的狀況,實在無法防止誤用的情形。

以下就探討一下 IIS 7,Web Development Server,及2010/01/13 推出的 IIS Express

使用 IIS

所有的 ASP.NET 應用程式,無論是 WebSite,WebForm,還是最新的 MVC,最終需要部署到 IIS 上。我認為開發環境最好直接使用 IIS,避免開發環境與正式環境差異太大,開發人員與維運人員的認知才會趨於一致。

優點

  • 與正式環境趨於一致。尤其在權限設定差異最為常見。

缺點

  • 設定繁複,且不同版本的 IIS會有不同的設定方式。例如 IIS5, 5.1, 6, 7, 7.5。隨著IIS不同版本,設定的位置,介面,帳號都有極大的不同。
  • 在 Vista 或 Windows 7 上,由於UAC 的限制,需要以管理員權限執行 Visual Studio 才能開發。
  • Windows Home 版本無法安裝 IIS。尤其學生或 SOHO 人員常常經費不多,無法學習或開發簡易的程式。
  • 在 Windows XP 上,只能使用 IIS 5.1。此時如果想要在 XP 上開發 IIS 7 的 ASP.NET 程式就很難了。

想要讓開發人員對不同 IIS 版本都有一定程度的了解,幾乎是不可能的事了。開發人員只能儘快地開發出需求對應的功能,對於如何部署一事,大部份都不太在意。

ASP.NET Web Development Server 的缺點

為了克服 Visual Studio 使用 IIS 的困難,微軟開發了 ASP.NET Web Development Server 這個工具。

優點

  • 簡化開發環境。開發人員不必安裝 IIS。這一點,也克服了 Windows Home 版本無法安裝 IIS 的問題。

缺點

  • 一個應用程式一個 Port。無法使用虛擬目錄。也不適用 Single Sign On 的開發。
  • 不支援 HTTPS
  • 無法使用自訂的驗證方式 ,IPrincipalIIdentity
  • 只能給開發機使用
  • 與 IIS 相比,啟動時間長
  • 直接使用與開發人員所使用的帳號作為執行 security context,而開發人員所登入的帳號常常又是管理員,造成與部署 到IIS的真實狀況 (IUser, network Service, w3wp 等)差異甚大。
  • 無法模擬asp。如果您的程式有 asp 的網頁,就不適用 Web Development Server。
  • 與 IIS 7 上的 http handler, http module 執行方式不同。見 http://charlesbc.blogspot.com/2009/11/aspnet-file-does-not-exist.html 
  • etc.

由於 Web Development Sever 的設計先天上就與真實 IIS 的執行大異其趣,許多怪異的行為層出不窮。我非常不建議使用 Web Development Server 來執行軟體開發專案。

IIS Express

由於 UAC, IIS 7 等後來的技術演變,原先設計的 Web Development Server 早已不符合需求了。微軟也體認到了這一點,於是在2010 年中開始著手開發下一個繼任的版本,也就是 IIS Express 7.5。

優點

  1. 使用 IIS 7 同一個 Kernel。因此行為與 IIS 大致相同。例如可以模定 https,http modules 與 http handlers 也與 IIS 7 的執行結果一致。
  2. 使用與開發人員相同的 security context,因此不受 UAC 的限制。

IIS Express 同時包含了 IIS 與 Web Development Server 的優點。這也是我推薦的原因。

缺點

  1. 還是使用了開發人員的 security context。開發人員容易誤以為程式的執行結果都是對的,卻不知道其實是有許多前題(即安全設定)。

由於 IIS Express 才 release 沒多久,還無法知道有哪些實際的缺點。這個缺點的清單或許會愈列愈多吧。

參考

沒有留言:

Share with Facebook