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