天天看點

ASP.NET運作原理/運作機制

1.ASP.NET運作原理概述

ASP.NET運作原理/運作機制

如上圖,

當一個http請求發送過來并被IIS機收到之後,IIS首先通過你請求的頁面類型為其加載相應的dll檔案,

然後在處理過程中将這條請求發送給能夠處理這條請求的子產品,而在ASP.NET中這個子產品就叫做HttpHandler,為什麼aspx這樣的檔案可以被伺服器處理,那是因為在伺服器端有預設的HttpHandler專門處理aspx檔案,

IIS再将這條請求發送給能夠處理這條請求的子產品之前,還需要經過一些HttpModule,這些都是系統預設的Modules,而且在這個http請求傳到HttpHandler之前要經過不同的HttpModuls的處理,這就像我們如果要乘坐國際航班飛抵異國他鄉的話,在 你真正坐上飛機前,要經過購買機場建設費,辦理登記手續核實身份,進行行李打包托運,進行安全檢察,現在又要進行體溫等檢察一樣,需要經一系列的嚴格的手 續。這樣做有什麼好處,一是為一些必須的過程,二是為了安全性,三是為了提高效率,四是為了我們能夠在更多的環節上進行控制,即增強了我們的控制能力。而 上述的都是系統的,怎麼能說是我們的對http請求控制能力能,那麼我們是否可以建立自己的HttpModule和HttpHandler嗎?答案是肯定的。但我們先不要急于做事,讓我們再深入研究一下運作機制吧。

本文來自CSDN部落格,轉載請标明出處:http://blog.csdn.net/flashlm/archive/2007/07/06/1681487.aspx

2.ASP.NET運作機制

ASP.NET運作原理/運作機制

那麼上面這張圖讓我們能夠更清楚地看到一個http請求是如何經過伺服器的處理的,同時通過這張圖我們也可以看出Request是掌管着所有用戶端輸入的。圖中為我們展示了一個http請求有可能經過的四條路線。當你第一次通路這個頁面時這個請求首先依次經過HttpModuls和HttpHandler的處理,而在HttpHandler的進行中伺服器會為你轉到你真正要通路的頁面,然後通過ASP Engine來找到這個頁面背後的類,并執行個體化為一個臨時對象,再此過程中會觸發一系列的事件,其中一部份的事件需要經過對象中的方法處理,之後伺服器會将這個處理後頁面發移交給Response對象,然後由Response對象将這個頁面發送到用戶端。這就是第一條路線,而當你在這個頁面上進行重新送出一些資訊,并繼續向伺服器發送請求時,因為你的伺服器之間的會話已經建立,對于你所在的那個臨時對象在伺服器中已經建立,是以不用再經過初始化頁面的工作,故這第二條路線是按照 HttpModuls,HttpHandler,然後直接與臨時對象互動,然後傳回的。第三條路線與第二條不同的是在處理請求時如果涉及到需要調用ASP Cache,既ASP 緩存的,而臨時對象回将直接從ASP 緩存提取資訊并傳回.這第四條路線就是當你重新整理這個頁面的時候,伺服器接收到時發現這個請求先前已經處理過了,并将處理結果存儲到由一個預設的HttpModule管理的輸出緩存中了,那麼我們就可以直接從這個緩存提取資訊并傳回,而無需再重新處理一遍了。

本文來自CSDN部落格,轉載請标明出處:http://blog.csdn.net/flashlm/archive/2007/07/06/1681487.aspx

繼續閱讀