ASP.NET機制詳細的管道事件流程

來源:互聯網
上載者:User

標籤:server   nfa   控制項   連結   委託   mil   ip地址   好的   close   

      最近回顧了一些新知識, 本人簡單介紹下ASP .NET機制,:在這裡與大家一起分享一下:

第一.瀏覽器向伺服器發送請求。

1)瀏覽器向IIS伺服器發送請求網址的網域名稱,根據HTTP協議封裝成請求報文,通過DNS解析請求的IP地址,接著通過socket與IIS通訊。

 

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Net; 5 using System.Net.Sockets; 6 using System.Text; 7  8 namespace MyIIS 9 {10     using System.Threading;11    public class SocketServer12     {13       Socket serverSocket;14        int port;15        string ip;16        Action<string> display;17 18        //函數19       public  SocketServer(int port,string ip,Action<string>display)20       {21           this.display = display;22           this.ip = ip;23           this.port = port;24     25       }26       public void Start()27       {28           //1.開啟socket29           serverSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);30 31           //2. 將socket幫到指定的IP和連接埠32           IPEndPoint ipp = new IPEndPoint(IPAddress.Parse(ip),port);33           serverSocket.Bind(ipp);34           //3 開啟監聽35           serverSocket.Listen(10);36 37           //4.等待用戶端的串連 38 39           Thread th = new Thread(AcceptClient);40           th.IsBackground = true;41           th.Start();42           this.display("伺服器啟動成功");43 44       }45       bool isStop = false;46        //監聽用戶端的連結47       private void AcceptClient()48       {49           while (!isStop)50           {51               //接受用戶端的連結52               Socket cSocket = serverSocket.Accept();53 54               Thread MsgSocket = new Thread(ReceiveMsg);55               MsgSocket.IsBackground = true;56               MsgSocket.Start();57 58          }59       }60       //接受用戶端的資訊61       private void ReceiveMsg(object socket)62       {63         64               Socket tmpsocket = (Socket)socket;65 66 67               while (!isStop)68               {69 70                   byte[] recBuffer = new byte[1024 * 1024];71 72                   tmpsocket.Receive(recBuffer);73                   string requestMsg = System.Text.Encoding.UTF8.GetString(recBuffer);74                   this.display(requestMsg);75                   byte[] responseBytes = IsapiRuntime.ProcessRequest(requestMsg);76                   // 通過socket將內容發送回瀏覽器77                   tmpsocket.Send(responseBytes);78               }79           80           81       }82     }83 }

 

第二.IIS伺服器判斷檔案類型。

1)IIS接受到請求後,解析要求請是什麼類型的檔案,如果請求的是靜態檔案(例如:html,js,cs ,etc),IIS會直接處理,根據前台頁面類的URL名稱,到本地找到被請求的頁面類,返回給瀏覽器。

 2) 如果是動態檔案(例如:ashx,aspx),IIS發現自己處理不了該檔案,那麼就到映射表找,找個一個叫aspnet_isapi的擴充程式,可以直接處理ashx,aspx尾碼的動態檔案,然後交給ASP.NET架構處理。

第三.執行ASP.NET架構的ISAPIRrunTime。

ISAPIRrunTime 通過它的 ProcessRequest 方法,把HttpContext的HttpRequest做為參數,傳給ISAPIRrunTime 類的方法,該類建立了HttpRuntime對象。

 

 第三.HttpRuntime類主要建立了量大對象。

一)執行個體化HttpContext對象

 建立2大對象

 

1)建立HttpContext類

HttpRequest 請求報文:主要是IIS伺服器請求報文。

HttpResponse響應報文主要是向瀏覽器響應報文。

HttpServerUtility的屬性server:主要是擷取請求類的實體路徑。

ReMapHandler介面:主要是儲存建立好的被請求類的對象

二)執行個體化HttpApplicationFactory對象

 HttpApplicationFactory對象通過它的PR(ProcessRequest)方法建立 HttpApplication對象。

三)HttpApplication對象大概建立19個委派物件。

HttpApplication對象大概建立19個委派物件,也稱為管道事件。

第1管道事件

主要是全域的捕獲,可以在這裡執行一個方法,這個方法比每個頁面的方法先執行。也可以捕獲異常,主要是沒有被try {}catch{}捕獲到的異常,詳細看原始碼。

第2-5管道事件

主要是請求使用者的資訊以及頁面的訪問權。

第6-7管道事件

主要是判斷頁面是否有緩衝,如果有,直接讀取緩衝,不再繼續執行ASP.NET機制。如果沒有,就往下執行。

第8管道事件

通過反射建立被請求的頁面類對象,把它存在remaphandler屬性裡面。

第9-10管道事件

判斷頁面是否儲存了有效Session,如果有效,就不再到Session建立Session對象,同時,儲存SessionId在用戶端的記憶體。

第11-12管道事件

判斷是靜態頁面還是動態網頁面,如果是靜態頁面,那麼就不用執行生命週期。否則,就執行生命週期。通過_buildControltree建立控制項數。

調用生命週期Render方法,建立html代碼。

第13-16管道事件

釋放資源以及更新緩衝。

第17-18管道事件

更新日誌。

第19管道事件

執行完畢。

 希望這個簡單的ASP.NET機制對大家有協助,接下來會詳細講每個事件的詳細資料,請關注。

 

 

 

 

ASP.NET機制詳細的管道事件流程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.