程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET應用程序生命周期趣談(一)

ASP.NET應用程序生命周期趣談(一)

編輯:關於ASP.NET

這幾天一直在看ASP.NET應用程序生命周期,真是太難了,我理解起來費了勁了,但偏偏它又是那麼重 要,所以我希望能給大家帶來一篇容易理解又好用的文章來幫助學習ASP.NET應用程序生命周期。這篇就 是了。

當你訪問博客園想看我的這篇文章的時候,這個請求就被博客園的WEB SERVER(IIS)接收到了。博客 園IIS看了一眼我的請求,“噢,是.aspx啊,給ASP.NET去處理吧,就把我這個請求給了ASP.NET,並且說 :“這個你來處理,你處理完了之後把HTML給我,我好給邱爽一個回復”。

ASP.NET收到IIS傳遞過來的請求後也沒時間抱怨啊 就開始干活兒了。怎麼干的呢?

第一,它先創建了一個Context對象,它就像個箱子,箱子當然是來裝東西的啦,裝什麼呢?

第二,ASP.NET創建了一個Request對象,包含了IIS傳遞給它的所有信息(IIS傳遞過來的實際就是個 Request嘛)。

第三,ASP.NET接著又創建了一個Response對象,用來裝HTML的,也放進箱子(Context)

第四,然後,ASP.NET說,太累了,這活兒沒個干,還是雇個人吧。就雇了個項目經理 (HttpApplication對象),然後就把箱子(Context)交給項目經理並且對它說,這裡有我們收到的 Request,你需要做的就是把裡面的Reponse填一下,具體怎麼干你掂量著吧,就走了。

這個項目經理(HttpApplication對象)就想啊,憑啥活兒我干錢你們拿啊?不行,我得找倆苦力去, 於是就有了:程序員HttpModule和程序員HttpHandler,姑且就稱他們為P_Module和 P_Handler吧,項目 經理先找到了P_Module.

P_Module(HttpModule)非常的能干,它能夠去查看 ASP.NET交給項目經理(HttpApplication對象)的 箱子(Context),並且根據裡面的東西做一些決定,比如安全啊(FormsAuthenticationModule),狀態啊 (SessionStateModule )等等吧。在P_Module工作完成之後(也許已經改變了箱子裡(Context)的內 容),項目經理開始找P_Handler來做填充Response的工作。現在招人難啊,找了好久也沒招到,好吧, 找獵頭(HttpHandler Factory)吧。獵頭公司一看,“噢,要.aspx Handler啊",於是找來了一個天生就 善於並且願意處理頁面的P_Handler(.aspx頁面最終會編譯成一個有繼承機構的 IHttpHander),然後交 給項目經理(HttpApplication)。項目經理看了一眼P_Handler之後,覺得還行,就把 P_Module處理過 的箱子交給它並且說:"處理一下這個箱子裡的東西,然後交給我"。

P_Handler是個天生的處理頁面的牛人,它根據Request 對象裡的東西是用了一招"乾坤大挪移",不知 道怎麼挪的,就挪出了HTML並塞進了Response對象中。P_Handler自信的笑了一聲,把箱子交還給了項目 經理(HttpApplication對象)。項目經理從箱子裡面把Response對象拿出來直接給了IIS,IIS又給了你 了,你就看到這篇文章了。

故事就是故事,故事就是故去的事,就是往事。那往事肯定就有遺漏的地方。那我們這個故事遺漏了 哪些地方呢?

第一,IIS和ASP.NET之間的交互不是像我說的那麼簡單而直接的,中間還發生了很多事情。

第二,HttpModule,也就是我們的程序員P_Module, 它其實還能干很多事情,我們並沒有去發掘。

第三,HttpHandler,也就是我們的程序員P_Handler,它的"乾坤大挪移"就是ProcessRequest方法, 這裡並沒有詳述到。

第四,。。。等我再想想再跟您聊。

希望這邊小文能夠幫助你更容易的理解ASP.NET生命周期,我會繼續努力,爭取以最簡單明了的方式來 speak out ASP.NET原理和運行機制。歡迎拍磚,謝謝。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved