成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Asp.Net頁面生命周期

開發 后端
用戶的請求是通過觸發HttpApplication的19個事件23個步驟進行處理的。如果是一般處理程序(.ashx),那么執行完管道中的事件后按照原路進行返回。如果是aspx頁面那么就開始走頁面的生命周期了。

我們都知道,瀏覽器的作用就是將用戶請求的內容封裝成HTTP報文的形式,然后通過Socekt套接字和域名解析服務器(DNS)將域名轉成ip地址發送到服務器。

服務器端的Windows操作系統分為兩個部分,IIS運行在用戶模式下,而監聽80端口的那部分是運行在內核模式HTTP.SYS(內核模塊也是一個插件機制。socket通信機制在內核模塊中,內核模塊也是一種通信機制)下的,屬于HTTP處理的內核模塊,內核模式可以監聽當前機器所有的Http請求,并將當前請求進行簡單解析,確定協議的類型請求的端口,訪問注冊表,確定當前的請求需要交給IIS進行處理。

IIS接收到請求之后,訪問INetInfo.exe(IIS主進程中的元數據信息),判斷文件的類型并查詢當前的請求需要經過那個擴展程序處理。如果是靜態文件(html.,js,jpeg.git),直接將文件從服務器讀取出來按照原路返回,如果是動態文件(ashx,aspx),則交給擴展程序aspnet_isapi.dll文件執行,aspnet_isapi.dll是一個擴展程序,實現了IIS內部的一些API,也是一種請求過濾的插件。它的作用是1.負責啟動托管環境。2.初始化托管環境。3.將請求分發給托管環境。也就是說,它負責啟動aspnet  Runtime創建aspnet運行環境,將請求交給ISAPIRuntime的PR方法。

ISAPIRuntime是進入NET托管環境的入口,它在方法中通過一個ecb句柄指向了當前請求報文體的內存地址,將HTTP請求報文簡單封裝為一個HttpWorkRequest對象。

調用HttpRuntime.PR(wr:(HttpWorkRequest對象))根據 HttpWorkRequest對象封裝成一個HttpContext上下文對象,它包含了所有的請求信息.然后交給HttpApplicationFactory進行處理。

根據HttpApplication獲得一個HttpApplication對象的實例,獲取實例的時候,先去Application池中去找是否有空閑的HttpApplication對象,如果有則直接返回一個對象,不存在的話就就先編譯globle文件生成一個HttpApplication的派生類,通過反射創建一個HttpApplication實例并返回。并開始處理用戶的請求。

用戶的請求是通過觸發HttpApplication的19個事件23個步驟進行處理的。如果是一般處理程序(.ashx),那么執行完管道中的事件后按照原路進行返回。如果是aspx頁面那么就開始走頁面的生命周期了。

頁面生命周期的主要步驟如下:

1.創建頁面控制樹,那么如何創建頁面樹的結構呢?把它封裝成了一個方法,這個方法的名字就叫做FrameworkInitliaze() 在方法內部給aspx上所有的控件都New一個實例,然后構造一個樹的結構即是有一個樹的結構。只有執行創建頁面之后,頁面上才會有控件。

2.判斷IspostBack,確定是否回發。

3.初始化

      初始化包括三個階段:

      1)PreInint()預初始化

         A.調用OnPreinit方法引發PreInit事件

         B.利用App_Themes目錄中的內容進行初始化主題。以動態實現一個PageThem  

           屬性值,并創建一個編譯類的實例。

         C.應用模板頁

      2)開始初始化,將所創建的控件樹上的控件都new一個實例并賦默認值。

         A.遞歸初始化Controls集合中的控件,初始化包括設置這些控件的屬性。

         B.遞歸應用控件皮膚。

         C.調用OnInit方法以引發自身的Init事件,接著遞歸調用子控件的OnInit方法來    

           引發他們的Init事件。

         D.調用自身的TrackViewState方法重啟自身的視圖狀態跟蹤,接著遞歸調用子控                 

            件的TrackViewState方法重啟自身的視圖狀態跟蹤。

        3)InitComplete()初始化完成

       4.加載ViewState處理回發數據:

            加載頁面狀態,解析隱藏域中的ViewState,ViewState保持的值賦值到對應 

        控件中。把需要觸發事件的控件放到一個集合當中去。 

       5.預加載(PreLoad)

             頁面調用OnPreLoad方法以引發PreLoad事件,該事件表示頁面生命周期進 

         入加載階段。對應sapx.cs中的Page_Load事件。

       6.加載(Load)

             頁面首先調用自身的OnLoad方法以引發自身的Load事件,接著遞歸調用 

         Contorls集合中控件的OnLoad方法以引發它們的Load事件。

       7.ProcessPostData第二次處理回發數據

       8.觸發改變的事件和點擊事件。

       9.頁面加載完成

       10.預渲染,對空間樹進行最后一次處理

       11.保存當前頁面的狀態。

       12.頁面渲染

       頁面生命周期結束后,形成了頁面,繼續執行管道之后的事件,執行完畢后按照原路返回到客戶端。

 

原文鏈接:http://www.cnblogs.com/hanwenhuazuibang/archive/2013/04/07/3003289.html

責任編輯:林師授 來源: 博客園
相關推薦

2009-08-04 16:05:15

ASP.NET頁面生命

2009-08-04 16:50:15

ASP.NET頁面生命

2009-07-31 10:47:18

ASP.NET頁面生命

2009-08-03 14:18:40

ASP.NET編程模型ASP.NET頁面生命

2012-08-16 09:38:38

ASP.NET

2009-08-03 14:37:38

ASP.NET編程模型頁面生命周期

2009-07-20 10:33:02

ASP.NET MVC

2009-07-23 10:23:44

2009-07-23 18:14:17

MVC生命周期

2009-08-04 17:49:31

Web Page生命周ASP.NET Pos

2009-08-10 14:31:46

ASP.NET組件設計ASP.NET控件生命

2009-02-12 13:16:55

請求生命周期MVCASP.NET

2009-08-07 16:57:17

ASP.NET頁面生存

2009-07-28 09:46:53

ASP.NET服務器控

2009-07-23 18:55:17

ASP.NET頁生命周

2011-06-21 10:26:37

2010-04-02 09:02:02

ASP.NET MVC

2009-08-04 15:58:06

ASP.NET動態控件

2021-04-26 09:22:07

ASP.NET Cor服務周期

2009-07-31 17:53:39

ASP.NET線程安全
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 超碰97在线免费 | 亚洲综合色婷婷 | 精品国产一级 | 精品在线一区 | 国产精品日韩一区二区 | 一区二区三区在线免费观看视频 | 亚洲国产一区二区视频 | 国内久久| 古装三级在线播放 | 久久一| 国产98色在线 | 日韩 | 国产精品免费大片 | 在线成人www免费观看视频 | 日韩一区二区三区在线观看 | 国内精品99 | 男人的天堂中文字幕 | 精品久草 | 一级毛片视频 | 免费毛片网站在线观看 | 一级女毛片 | 亚洲精品乱码久久久久久9色 | 久久国产精品免费一区二区三区 | 国产精品久久一区二区三区 | 91麻豆精品国产91久久久资源速度 | 在线免费观看黄网 | 精品久久国产 | 国产成在线观看免费视频 | 久久精品一区 | 日韩欧美亚洲 | 久久亚 | 国产精品久久一区二区三区 | 中文字幕亚洲一区二区三区 | 久久久久久成人 | 亚洲精品视频导航 | 亚洲精品久久久久国产 | 国产色网| 亚洲精品v | 精品免费 | 欧美日韩精品国产 | 日韩视频中文字幕 | 日韩一区二区成人 |