ASP.NET和IIS服務器 7.0之集成
在早期的IIS服務器版本中,開發人員需要編寫ISAPI擴展/過濾器來擴展服務器的功能。除了寫起來非常痛苦外,ISAPI在如何接入服務器以及允許開發人員定制方面也是非常有限。
例如,你無法在ISAPI擴展中實現URL重寫代碼(注:ASP.NET是以ISAPI擴展的方式實現的)。假如你把運行時間長的代碼編寫成ISAPI過濾器的話,結果是你將占用web服務器的I/O線程(這就是我們不讓托管代碼在請求的過濾器執行階段運行的原因)。
我們在IIS服務器7中對核心IIS服務器處理引擎做的一個重大的架構級變動是通過一個新的模塊化的請求管道架構來促成極其豐富的擴展性。
你現在可以通過與web服務器注冊一個HTTP擴展性模塊(HTTP Extensibility Module),在任意一個HTTP請求的生命周期的任何地方編寫代碼。這些擴展性模塊可以使用native的C++代碼或.NET托管代碼來編寫(你可以使用現有的ASP.NET System.Web.IHttpModule接口來實現)。
所有“內置”的IIS服務器7功能(認證,授權,靜態文件供應,目錄清單支持,經典的ASP,記錄日志等),現在都是使用這個公開的模塊化的管道API來實現的。這意味著你可以除去這些IIS服務器S7“內置”功能的任意一個,而以你自己的實現來替換/擴展這些功能。
IIS服務器7.0上的ASP.NET本身也從以ISAPI的實現形式變成直接接入IIS服務器7管道的模塊。
【編輯推薦】