記得前一段時間有本不錯的書叫Delphi深度曆險,寫得不錯,我也就暫且借用了,:) 在這裡我不打算簡單介紹ASP.NET的入門知識了,ASP.NET除了名字和古老的ASP有些相同外,已經是完完全全的改變了,雖然你仍能在ASP.NET中發現你熟悉的Session,Application等等,但是不要嘗試將他們同遠古的ASP時代的Session等等畫上等號。 我們來慢慢的深入到ASP.NET Framework的核心內部,看看她是如何?的,看看她是如何能承擔起下一代Web開發技術平台這個美譽的。 這篇東東不曾想過要完成多少章節,也沒有這個必要,權當日記的形式存在,或許很短,或許很長,我會盡我的所能來將ASP.NET Framework展現在諸位面前。 如果你對ASP.NET Framework沒有任何瞭解,你同樣可以成為ASP.NET coding高手,如果是這樣,你就不必繼續看下去了。Chapter One -- Process a http request. 我們瞧一瞧ASP.NET Framework的運行機制和架構。 在開始之前,我們先跟隨考古學家參觀一下古老的ASP運行機制: 當你請求一個*.asp檔案的時候,這個http request首先被inetinfo.exe進程所截獲,這個inetinfo.exe進程就是WWW服務進程,然後她會將這個請求轉交給asp.dll進程,asp.dll進程就會解釋執行這個asp葉面,然後將解釋後的資料流返回給用戶端瀏覽器。 轉過頭來我們看看如今的ASP.NET Framework是如何處理一個http request. 當你請求一個*.aspx檔案的時候,同樣的這個http request會被inetinfo.exe進程截獲,她判斷檔案的尾碼之後,將這個請求轉交給ASPNET_ISAPI.dll,ASPNET_ISAPI.dll會通過一個被稱為Http PipeLine的管道,將請求發送給ASPNET_WP.exe進程,當這個http request進入ASPNET_WP.exe進程之後,會通過HttpRuntime來處理這個請求,處理完畢將結果返回用戶端。 OK,好像並沒有太大的改進嘛,不要著急,在ASP.NET Framework中我們甚至能夠瞭解到HttpRuntime的細節。好,繼續深入下去: 當Http Request進入HttpRuntime之後,會繼續進入到一個被稱之為HttpApplication Factory的一個Container中,她會給出一個HttpApplication來處理傳遞進來的請求,這個請求會依次進入如下幾個Container:HttpModule->HttpHandler Factory->HttpHandler。 當系統內部的HttpHandler的ProcessResquest方法處理完畢之後,整個Http Request就完成了,用戶端也就得到相應的東東了。 整理一下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() 或許會問,我知道這個處理流程有什麼用處呢?當然有用了,比如如果你想要中途截獲一個Http Request並且做些自己的處理,該如何做呢?這是下一次我們探討的東東了,下次我們詳細討論處理的細節問題。 see you later |