直播中
Chapter One -- Process a http request.
我們瞧一瞧ASP.NET Framework的運行機制和架構(gòu)。
在開始之前,我們先跟隨考古學(xué)家參觀一下古老的ASP運行機制:
當(dāng)你請求一個*.asp文件的時候,這個http request首先被inetinfo.exe進程所截獲,這個inetinfo.exe進程就是WWW服務(wù)進程,然后她會將這個請求轉(zhuǎn)交給asp.dll進程,asp.dll進程就會解釋執(zhí)行這個asp葉面,然后將解釋后的數(shù)據(jù)流返回給客戶端瀏覽器。
轉(zhuǎn)過頭來我們看看如今的ASP.NET Framework是如何處理一個http request.
當(dāng)你請求一個*.aspx文件的時候,同樣的這個http request會被inetinfo.exe進程截獲,她判斷文件的后綴之后,將這個請求轉(zhuǎn)交給ASPNET_ISAPI.dll,ASPNET_ISAPI.dll會通過一個被稱為Http PipeLine的管道,將請求發(fā)送給ASPNET_WP.exe進程,當(dāng)這個http request進入ASPNET_WP.exe進程之后,會通過HttpRuntime來處理這個請求,處理完畢將結(jié)果返回客戶端。
OK,好像并沒有太大的改進嘛,不要著急,在ASP.NET Framework中我們甚至能夠了解到HttpRuntime的細節(jié)。好,繼續(xù)深入下去:
當(dāng)Http Request進入HttpRuntime之后,會繼續(xù)進入到一個被稱之為HttpApplication Factory的一個Container中,她會給出一個HttpApplication來處理傳遞進來的請求,這個請求會依次進入如下幾個Container:HttpModule->HttpHandler Factory->HttpHandler。
當(dāng)系統(tǒng)內(nèi)部的HttpHandler的ProcessResquest方法處理完畢之后,整個Http Request就完成了,客戶端也就得到相應(yīng)的東東了。
整理一下ASP.NET Framework處理一個Http Request的流程:
HttpRequest-->inetinfo.exe-->ASPNET_ISAPI.dll-->Http Pipeline-->ASPNET_WP.exe-->HttpRuntime-->HttpApplication Factory-->HttpApplication-->HttpModule-->HttpHandler Factory-->HttpHandler-->HttpHandler.ProcessRequest()
或許會問,我知道這個處理流程有什么用處呢?當(dāng)然有用了,比如如果你想要中途截獲一個Http Request并且做些自己的處理,該如何做呢?這是下一次我們探討的東東了,下次我們詳細討論處理的細節(jié)問題。
see you later
(待續(xù),歡迎探討:uestc95@263.net)