摘要:IIS 7.0
【原文位址】IIS 7.0
【原文發表日期】 Monday, April 02, 2007 11:10 PM
IIS 7.0是我的團隊今年稍後將推出的最讓我激動不已的產品之一。它是自IIS 1.0之後我們所做過的最重大的web伺服器發佈,它將為管理人員和開發人員引入不計其數的改進。
IIS開發團隊的Mike Volodarsky為MSDN雜誌的2007年3月期撰寫了一篇精彩的文章 (英文版),總結了IIS 7.0的一些主要改進。我強烈建議你去這裡 (英文版)閱讀一下他的精彩文章,以對這些改進有個簡短瞭解。
IIS 7.0是包括在Windows Vista客戶機上的,該作業系統的家用版本也帶有IIS 7.0(而不像IIS 5.1,只有在XP Professional上才有)。伺服器的IIS 7.0版本將在今年稍後隨Windows Longhorn伺服器發佈,將添加一堆額外的部署特性,包括更加豐富的主機支援,安全的FTP支援,以及內建的web farm部署支援等。
Web farm支援將是特別地酷,它將允許你在一個包含了運行一個伺服器所需的所有編碼,組態,內容和密鑰的文件共享上部署你的web應用。然後你可以添加任意數目的無狀態,無組態的web伺服器到一個web farm上,只需將它們指向那個文件共享,來動態載入它們的組態設定(包括繫結,虛擬目錄,應用池設定等等)和應用內容即可。這使得在多個機器上擴縮一個應用簡直是小菜一碟,可避免使用複製方法來做組態和應用部署(只要把文件拷貝到文件共享上,web farm裡的所有機器就會馬上載入變動過的文件)。
即將推出Windows Longhorn伺服器的Beta3版本將會支援go-live許可,所以你不久就能利用這個功能。我們已經在用IIS 7.0叢集運行 www.Microsoft.com 了,所以你不會寂寞的!(【譯註:在本文的中文版發表之前,Windows Longhorn伺服器的Beta3版本已經發佈】)
ASP.NET和IIS 7.0之整合
在早期的IIS版本中,開發人員需要編寫ISAPI擴充/過濾器來擴充伺服器的功能。除了寫起來非常痛苦外,ISAPI在如何接入伺服器以及允許開發人員定制方面也是非常有限。譬如,你無法在ISAPI擴充中實現URL覆寫程式碼(註:ASP.NET是以ISAPI擴充的方式實現的)。假如你把運行時間長的程式碼編寫成ISAPI過濾器的話,結果是你將佔用web伺服器的I/O執行緒(這就是我們不讓受管理程式碼在請求的過濾器執行階段運行的原因)。
我們在IIS7中對核心IIS處理引擎做的一個重大的架構級變動是通過一個新的模組化的請求管道架構來促成極其豐富的擴充性。你現在可以通過與web伺服器註冊一個HTTP擴充性模組(HTTP Extensibility Module),在任意一個HTTP請求的生命週期的任何地方編寫程式碼。這些擴充性模組可以使用native的C++程式碼或.NET受管理程式碼來編寫(你可以使用現有的ASP.NET System.Web.IHttpModule介面來實現)。
所有「內建」的IIS7功能(認證,授權,靜態文件供應,目錄清單支援,傳統的ASP,記錄日誌等),現在都是使用這個公開的模組化的管道API來實現的。這意味著你可以除去這些IIS7「內建」功能的任意一個,而以你自己的實現來替換/擴充這些功能。
IIS 7.0上的ASP.NET本身也從以ISAPI的實現形式變成直接接入IIS7管道的模組:
這帶來諸多好處:
1) 你現在可以對伺服器的所有請求(譬如, .htm,.php,.jsp文件)使用ASP.NET表單認證,成員/角色,以及任何其他特性。
2) 你現在可以輕鬆地覆寫任何web請求的URL或者以種種有趣的方式對請求做改動。
3) 你可以使用VB或C#替換或擴充任何現有的IIS特性(譬如,你可以除去內建的目錄清單模組,接入你自己的模組)。
這確實給.NET開發人員帶來了無窮多的擴充性機會。
IIS 7.0 下載中心
為幫助開發人員共享他們編寫的擴充性模組和其他add-in,IIS開發團隊最近在www.iis.net上發起了一個 「下載中心」,這允許開發人員瀏覽/下載以及上傳和共享IIS的模組擴充。你可以在這裡查看一下。
注意,除了讓你編寫受管理的HTTP模組的擴充性功能外,IIS7現在也允許你編寫受管理的管理工具的UI擴充(管理工具本身是使用 Windows Forms編寫的),以及使用.NET的System.Configuration 命名空間來管理IIS7組態系統。
可為ASP.NET開發人員所用的酷場景
除了IIS 7.0提供的既酷又新的擴充性選項外,還有ASP.NET開發人員將會非常欣賞的成堆的大大小小的改進。我將在接下來的幾個星期/月份裡在部落格裡討論一系列的改進,指出你能利用的一些非常酷的東西。
我也強烈建議你訂閱IIS 7開發團隊在這裡的部落格feed。
希望本文對你有所幫助,
Scott