Asp.net的網頁生命週期



Asp.net網頁生命週期
指的是asp.net server端在接收到client端所送出的http request後,處理的流程。

分成八個階段,依序完成。

1. Page request(要求)

接收client端發出的request物件,決定要重新生成網頁回傳,還是快取裡面有可以直接回傳的網頁資料。

2. Start(開始)

a. 準備 request跟response物件的屬性,最後會在rendering階段寫入。
b. 判斷這是第一次造訪的request,還是Postback,是的話就設定Page.IsPostBack 這個屬性。

3. Initialization(初始化)

a. 套用佈景主題
b. 載入web 伺服器控制項(WebControls);如果是這次是Postback,這階段還沒有把ViewState恢復。
ViewState是asp.net的機制,會把控制項選好的內容用<input type="hidden" ....>偷偷記錄下來,傳遞的時候才不會造成每次控制項都清空。
因為http是無狀態協定,每一個request都是獨立的,不會紀錄client跟server端的資料,就不會知道上一次使用者選了什麼;用ViewState記錄下來的話,server這邊就會把控制項的值都設定成ViewState的狀態,再傳回client端,client端看起來就會像是沒有改變了,缺點是一來一回要傳的資料量就比較大,效能會比較差。)

4. Load(載入)

a. 如果是Postback,就恢復Webcontrol控制項的ViewState。
(也就是把之前選取的狀態都設定好,傳回去client端才不會變成初始化的狀態,造成使用者需要重選。)

5. Validation(驗證)

a. 呼叫每個Webcontrol控制項的Validate()方法,執行各自的驗證。並設定每個控制項和整個網頁的IsValid屬性。

6. Event Handling(事件處理)

a. 處理Postback的事件

7. Rendering(呈現)

a. 把ViewState跟Webcontrol控制項狀態儲存
b. 呼叫每個Webcontrol控制項的Render(),生成一般的HTMLJavaScript原始碼,寫入Response的OutputStream

8. Unload(卸載)

a. 把網頁成功送回給clinet端並顯示在瀏覽器上,就可以把網頁卸載清理。







留言

這個網誌中的熱門文章

API、Method和Library是什麼東西和關係?

《人月神話》簡易心得