ASP.NET的HTTP模塊和處理程序
在Internet時代的開端,客戶端的需求非常有限;.htm文件就可以滿足他們的需求。但是,隨著時間的流逝,客戶端需求的擴充超越了.htm文件或靜態文件所包含的功能。開發者需要擴充或擴展Web服務器的功能。Web服務器廠商設計了不同的解決方案,但是都遵循同一個主題“向Web服務器插入某些組件”。所有的Web服務器補充技術都允許開發者建立并插入組件以增強Web服務器的功能。微軟公司提出了ISAPI(Internet服務器API),網景公司提出了NSAPI(網景服務器API)等等。
ISAPI是一種重要的技術,它允許我們增強與ISAPI兼容的Web服務器(IIS就是一種與ISAPI兼容的Web服務器)的能力。我們使用下面的組件達到這個目的:
· ISAPI擴展
· ISAPI過濾器
ISAPI擴展是使用Win32動態鏈接庫來實現的。你可以把ISAPI擴展看作是一個普通的應用程序。ISAPI擴展的處理目標是http請求。這意味著你必須調用它們才能激活它們。 你可以認為ISAPI過濾器僅僅就是一個過濾器而已。客戶端每次向服務器發出請求的時候,請求要經過過濾器。客戶端不需要在請求中指定過濾器,只需要簡單地把請求發送給Web服務器,接著Web服務器把請求傳遞給相關的過濾器。接下來過濾器可能修改請求,執行某些登錄操作等等。
由于這些組件的復雜性,實現它們非常困難。開發者不得不使用C/C++來開發這些組件,但是對于很多人來說,使用C/C++進行開發簡直就是痛苦的代名詞。
那么ASP.NET提供什么東西來實現這些功能呢?ASP.NET提供的是HttpHandler(HTTP處理程序)和HttpModule(HTTP模塊)。
在深入了解這些組件的詳細信息之前,了解一下http請求經過HTTP模塊和HTTP處理程序的時候的處理流程是有價值的。
建立示例應用程序
我建立了下面一些的C#項目以演示應用程序的不同組件:
· NewHandler (HTTP處理程序)
· Webapp (演示HTTP處理程序)
· SecurityModules (HTTP模塊)
· Webapp2 (演示HTTP模塊)
這些應用程序的安裝步驟:
· 解開attached zip文件中的所以代碼。
· 建立兩個虛擬目錄webapp和webapp2;把這兩個目錄指向Webapp和Webapp2應用程序的實際物理目錄。
· 把NewHandler項目中的Newhandler.dll文件復制到webapp應用程序的bin目錄。
· 把SecurityModules項目中的SecurityModules.dll文件復制到webapp2應用程序的bin目錄中。
本文先寫到這,對于ASP.NET中的HTTP模塊和處理程序的深入分析,筆者將繼續推出后五篇文章,分別介紹ASP.NET中的HTTP模塊和處理程序的其他五個部分,有興趣的讀者可以點擊鏈接繼續閱讀。
·ASP.NET的HTTP模塊和處理程序之HTTP模塊的注冊和使用
【編輯推薦】