關於IIS 6.0的故事一言難盡,如果你已經在IIS技術上有所投資,IIS 6.0無疑是一個動人的、非聽不可的話題。鑒於IIS 6.0和以前版本的差別實在太大了,只用一篇文章很難做到面面俱到,所以本文首先探討IIS 6.0的安裝、體系結構以及由於體系結構方面的差異帶 來的全新服務功能,下一篇文章接著介紹IIS 6.0的新特性——其中有些你可能還沒有聽說過,另外還有默認配置方面的一些重要變化,這些變化可能會影響到你的遷移計劃。
一、安裝IIS 6.0
首先從最基本的說起吧。IIS 6.0包含在Windows Server 2003服務器的四種版本之中:數據中心版,企業版,標准版,Web版。另外,順便再回答一個最常見的IIS 6.0問題:IIS 6.0不能在Windows XP、2000或NT上運行。
安裝好Windows 2003之後,馬上就可以看到Windows 2003/IIS 6.0的與眾不同之處,其中一個關鍵的變化是,除了Windows 2003 Web版之外,Windows 2003的其余版本默認不再安裝IIS。按照微軟過去的理念,安裝操作系統的同時IIS也自動啟動,為許多Web應用提供服務,Windows 2003的做法可謂一大突破。在Windows 2003中,安裝IIS有三種途徑:利用“管理您的服務器”向導,利用控制面板“添加或刪除程序”的“添加/刪除Windows組件”功能,或者執行無人值守安裝。
第一次啟動Windows 2003系統時,“管理您的服務器”向導自動啟動
選擇“添加或刪除”角色,在“配置服務器”向導中可以看到一系列可配置的服務器角色,其中就有“應用程序服務器(IIS,ASP.NET)”選項,如圖二,選中該選項之後點擊“下一步”,向導提供了是否安裝ASP.NET和Microsoft FrontPage服務器擴展的選項。可以看到,微軟在這裡采用了一種新型的“安裝任何部件之前總是征求用戶意見”的IIS安裝策略,對於微軟來說,這是一個徹底的轉變,證明微軟確實在認真對待安全問題。
圖三
也許你已經注意到了表一列出的某些新增組件選項,但你注意到IIS 6.0少了什麼嗎?IIS 6.0中消失不見的最主要的一個項目是文檔。在IIS 6.0中,所有文檔都以幫助文件的形式發布,不再有IISHelp虛擬目錄。在IIS 5.0中,如果從本地訪問服務器,默認Web網站自動打開IIS的文檔,但在IIS 6.0中,如果打開http://localhost”,只能看到一個聲明網站正在構建之中的頁面。
另外,在IIS 5.0的IISHelp虛擬目錄中有一些錯誤處理頁面,這些錯誤處理頁面以ASP的方式實現。如果你要用到定制的(或者修改過的)幫助文件、錯誤處理頁面,在IIS 6.0網站上必須自己創建該目錄。
進一步分析IIS 6.0的子組件清單,可以發現:原來在IIS 5.0和IIS 4.0中默認安裝的Internet服務管理器(ISM)已經不見了。但是,如果你點擊“萬維網服務”(IIS 6.0的子組件之一,但圖三沒有顯示出來),再點擊“詳細信息”,可以發現IIS 6.0的萬維網服務還有子組件,如圖四所示,其中包括原來的Internet服務器管理器,不過現在已經改名為“遠程管理(HTML)”;還有Windows 2003和XP版本的終端服務高級客戶端(TSAC)——現在它叫做“遠程桌面Web連接”。現在,我們不僅可以方便地添加或刪除這兩個子組件,對其他子組件也一樣,包括:ASP,Internet數據連接器,在服務器端的包含文件,WebDAV發布,當然還有萬維網服務。
圖四
安裝IIS 6.0的最後一種方式是無人值守安裝。和以前一樣,這仍舊是唯一一種能夠將工具和默認Web網站安裝到其他驅動器(而不是系統驅動器)的安裝方式。Windows 2003無人值守安裝方式大體上仍和Win 2K一樣,都是用Sysocmgr和一個應答文件實施安裝。當然,新的特性需要新的參數、選項,有關這方面的詳細說明,可以在Windows 2003 Release Candidate 2 (RC2)找到,地址是http://www.microsoft.com/technet/treeview/default.asp?url=/technet/prodtechnol/windowsnetserver/proddocs/datacenter/gs_installingiis.asp。
如果將IIS 5.0或IIS 4.0服務器升級到Windows 2003,IIS 6.0不會被設置成自動啟動。也就是說,如果采用升級的方式安裝,IIS 6.0默認是禁用的,除非遇到下列情況之一:
⑴ 以前的IIS服務器上已經安裝了IIS Lockdown工具。
⑵ 存在注冊子鍵HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\RetainW3SVCStatus,且它包含一個任意的注冊鍵。例如,你可以創建一個名為EnableIIS6的鍵,設定它的值為DWORD類型的1。
⑶ 在無人值守的升級安裝中,應答文件的[InternetServer]部分存在DisableWebServiceOnUpgrade = True/False條目。
二、支持服務
自IIS 6.0發布以來,它的某些新特性一直是人們關注和議論的焦點,成為眾人矚目的明星,但另一些Internet支持服務雖然不是經常有人說起,卻同樣值得關注,其中之一就是POP3服務和POP3服務Web管理器。我們無從得知微軟為何不在“應用程序服務器”組件清單中列出POP3服務,但是繼SMTP服務之後(SMTP服務隨同POP3服務一起安裝),管理員們盼望POP3服務已經很久了,他們一直在期盼著用一個簡單的POP3服務來替代龐大的Microsoft Exchange Server。
統一描述、發現和集成協議(Universal Description, Discovery, and Integration,即UDDI)服務是Windows 2003提供的又一種新的功能,它也與IIS有關,但默認不安裝(注意,Windows 2003 Web版不能安裝UDDI)。UDDI是一種產業標准(即不是微軟的發明),能夠通過廣告發布IIS服務器提供的Web服務——這裡“廣告”一詞的含義與日常生活中的廣告不同,它是指一種讓客戶程序(通常是Web浏覽器)獲知Web服務(通常是ASP.NET應用)各種細節的方式。UDDI仍在發展之中,但一些企業已經在內部采用UDDI,以便開發者將自己的代碼發布給其他協作開發的人。有關UDDI的更多知識,可以在下列網站找到http://www.uddi-china.org/(中文)http://www.uddi.org(英文)http://www.uddicentral.com(英文)。
最後一種重要的支持服務是後台智能傳送服務,即 Background Intelligent Transfer Service或BITS。BITS是一種後台文件傳輸機制和隊列管理器,也稱作節流傳輸服務。BITS控制文件請求,減少帶寬消耗並改善最終用戶的體驗。針對IIS啟用BITS可保證Web服務器的服務質量,如果沒有BITS,當100個用戶同時下載一個500 MB的文件,服務器的帶寬可能就被消耗殆盡,導致其他訪問Web服務的用戶頻繁地遇到超時錯誤。如果BITS就象廣告說的那樣有效,可以料想它將是一種非常實用的服務。Windows 2003發布之後,按照計劃,BITS還將移植到Win2K上。關於BITS的更多信息,請參http://www.microsoft.com/windows.netserver/techinfo/overview/bits.mspx。
三、全新的內核
從體系結構上看,IIS 5.0和IIS 4.0其實是一樣的:它們都是在用戶模式下運行的發布Web內容的應用程序,或者在Inetinfo進程之內以System帳戶運行,或者在Inetinfo進程之外以IWAM用戶運行。雖然在較重的負載下,IIS 5.0也有相當出色的表現;不過從IIS 6.0開始,我們對IIS底層結構的看法應該改變了。為了使IIS不僅能夠輕松地支持1000個Web網站,而且能夠支持10000個甚至更多的網站,同時還要提高Web服務器的安全性和可靠性,微軟放棄了原有的IIS內核,重新構造了一個。
另一個促使微軟重新構建IIS內核的原因是,微軟(以及其他廠商)認識到,Web服務器的性能和可靠性問題絕大部分是由於質量低劣的Web應用造成。IIS 5.0通過帶緩沖池的Out of Process容器減輕這類問題。在IIS 5.0中,在Out of Process池中運行的應用一旦崩潰,一般不會波及到IIS本身,因為應用程序在Inetinfo之外的進程中運行,但運行在Out of Process池之內的所有Web應用都會終止——在默認情況下,所有的應用程序都在該池之中運行。在這種情況下,排解故障很不容易,因為要確定哪一個應用程序導致了問題非常困難。IIS 6.0將監聽請求、創建和監視Web網站、運行Web服務這些不同的任務隔離了開來,這一新型體系可望解決IIS 5.0存在的問題。從理論上看,新的體系將極大地改善可用性、安全和性能;從實際情況看,根據微軟和Beta測試者的報告,新的體系令穩定性和性能有了奇跡般地提高。IIS 6.0的內核體系主要建立在三個組件之上:W3SVC,http.sys,以及W3Core。