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