微軟的程序設計和相應的IDE做的很棒,讓人很快就能有生產力。.NET上手容易,生產力很高,但對於一個不是那么勤奮的人,他很可能就不再進步了,沒有想深入下去的動力,他不用去理解整個框架和環境是怎么執行的,因為不用明白為什么好像也能做好工作。 .NET的人很多人不注重實現 ,知其然不知其所以然,這樣真的OK么?永遠懷着一顆學徒的心,你就能不斷進步!
我們知道在ASP.NET中,若要對ASP.NET應用程序進行初始化並使它處理請求,必須執行一些處理步驟,熟悉應用程序生命周期非常重要,這樣才能在適當的生命周期階段編寫代碼,達到預期的效果。永遠不要做只會拖控件的.NET程序員,Never!那么你就必須懂ASP.NET應用程序生命周期,懂ASP.NET頁面生命周期,懂ASP.NET 服務器控件原理。接下來,我們一起來看看
可以先看一下先導篇 【深入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個事件。
面向切面編程的時候,就是給你途徑往預定的執行順序里面添加自己處理邏輯。而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.rar
下一篇:【深入ASP.NET原理系列】--ASP.NET頁面生命周期
如果覺得本文對你有所幫助不如【推薦】一下! 如果文中有不妥或者錯誤的地方還望指出,以免誤人子弟。
作者:張一輝
出處:http://www.cnblogs.com/zhangyihui/
本文以學習、研究和分享為主,版權歸作者和博客園共有,歡迎轉載,但必須在文章頁面明顯位置給出此段申明。