ASP.NET請求管道、應用程序生命週期、總體運行機制

咱們知道在ASP.NET中,若要對ASP.NET應用程序進行 初始化並使它處理請求,必須執行一些處理步驟,熟悉應用程序生命週期很是重要,這樣才能在適當的生命週期階段編寫代碼,達到預期的效果。永遠不要作只會拖 控件的.NET程序員,Never!那麼你就必須懂ASP.NET應用程序生命週期,懂ASP.NET頁面生命週期,懂ASP.NET 服務器控件原理。接下來,咱們一塊兒來看看html

  能夠先看一下先導篇 【深刻ASP.NET原理系列】--ASP.NET請求管道對Asp.Net WebForm和Asp.Net Mvc的處理通用部分程序員

      這篇會着重講述ASP.NET應用程序生命週期其中的ASP.NET請求管道,咱們不少人可能已經知道ASP.NET請求管道有19個事件,那是IIS 5.0和IIS 6.0 或者IIS 7.0以上經典模式運行的時候狀況,當應用程序在IIS 7.0的集成模式下運行,而且與.NET Framework 3.0或更高版本一塊兒運行時,ASP.NET請求管道中會是22個事件。web

      面向切面編程的時候,就是給你途徑往預約的執行順序裏面添加本身處理邏輯。而ASP.NET中面向切面編程咱們能夠往ASP.NET請求管道中注入本身的代碼。通常採起兩種方式,一種是直接在Global.asax中對應的方法中直接添加代碼。一種是可以使用實現 IHttpModule 接口的模塊來擴展 ASP.NET 應用程序生命週期。託 管代碼模塊也能夠在 IIS 7.0 配置存儲區(ApplicationHost.config 文件)的 modules 元素中註冊。在 ApplicationHost.config 文件中註冊的模塊具備全局範圍,由於它們爲全部由 IIS 7.0 承載的 Web 應用程序而註冊。一樣,在 ApplicationHost.config 文件的 globalModules 元素中定義的本機代碼模塊也具備全局範圍。若是 Web 應用程序不須要全局模塊,則能夠將其禁用。編程

  下面咱們看一張圖,(始終以爲圖比文字更容易讓人理解)具體看一下ASP.NET應用程序中管道事件具體幹了些什麼事情,圖中有註釋每一步幹了些什麼。若是圖看不清,能夠下載圖片查看。(由於圖是本身畫的,若有不對的,歡迎你們指出批評交流,圖中22個事件的展現代碼在篇尾有附)服務器

輸出22個事件的Global代碼:http://files.cnblogs.com/files/zhangyihui/Global.rarui