程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> iis6.0與asp.net的運行原理,iis6.0asp.net原理

iis6.0與asp.net的運行原理,iis6.0asp.net原理

編輯:關於.NET

iis6.0與asp.net的運行原理,iis6.0asp.net原理


  這幾天上網翻閱了不少前輩們的關於iis和asp.net運行原理的博客,學的有點零零散散,花了好長時間做了一個小結(雖然文字不多,但也花了不少時間呢),鄙人不才,難免有理解不道的地方,還望前輩們不吝賜教。

  這篇博客主要是描述asp.net程序在iis6.0上的一個執行過程。

  執行過程圖:

 

組件描述

  HTTP.SYS:

    Win2003和winXP SP2的核心操作系統組件,,能夠讓任何應用程序通過它提供的接口,以http協議進行信息通訊。

  優點:

  簡單來說它是獨立於IIS之外的,任何http請求都會首先被它偵聽到

  W3SVC:

       1. 沒有第三方應用程序的代碼

       2. 根據配置數據的設置創建和監視w3wp.exe,由工作線程運行Web網站應用。

       3. 總是處於運行狀態,因此它能夠監視Web應用的健康狀況,並在必要時采取行動。由於這一策略,服務器能夠根據用戶指定的參數監視和重新啟動應用程序。

  Application Pool(應用程序池):

       1. 在IIS6.0中,每一個用戶web應用程序都會運行在一個應用程序池中。這個應用程序池可以是IIS默認的應用程序池,也可以是用戶自定義的應用程序池。

       2.作為一個宿主程序,每個應用程序池中都會運行著一個或者多個用戶web應用程序。

       3.在應用程序池中,存在著一個或者多個工作進程(一個以上叫Web園)。每個工作進程只能屬於一個特定的應用程序池,由這些工作進程來負責管理應用程序池中的用戶web應用程序。

  w3wp.exe(工作進程):

  默認情況下,IIS 6.0在工作進程隔離模式下運行,在這種模式中,對於每一個Web應用,IIS 6.0都用一個獨立的w3wp.exe的實例來運行它。 因此,工作進程隔離模式不存在          進程內(In-Process)應用程序存在的問題,有效地提高了可靠性和安全性。可靠性的提高是因為一個Web應用的故障不會影響到其他Web應用,也不會影響http.sys,每一        個Web應用由W3SVC單獨地監視其健康狀況。安全性的提高是由於應用程序不再象IIS 5.0和IIS4.0的進程內應用那樣用System帳戶運行,默認情況下,w3wp.exe的所有        實例都在一個權限有限的“網絡服務”帳戶下運行,必要時,還可以將工作進程配置成用其他用戶帳戶運行。

  Metabase(元數據):

執行過程

Application暴露出的事件

  1.BeginRequest:asp.net開始處理請求的第一個事件,表示處理的開始。

2.AuthenticateRequest:驗證請求,一般用來取得請求的用戶信息。

3.PostAuthenticateRequest:已經獲取請求的用戶信息。

4.AuthorizeRequest:授權,一般用來檢查用戶的請求是否獲得權限。

5.PostAuthorizeRequest:用戶請求已經獲得授權。

6.ResolveRequestCache:獲取以前處理緩存的處理結果,如果以前緩存過,那麼,不用再進行請求的處理工作,直接返回緩存的結果。

7.PostResolveRequestCache:已經完成緩存的處理工作。

8.PostMapRequestHandler:已經根據用戶的請求,創建了請求的處理器對象。

9.AcquireRequestState:取得請求的狀態,一般用於session

10.PostAcquireRequestState:已經獲得了session

11.PreRequestHandlerExecute:准備執行處理程序。

12.PostRequestHandlerExecute:已經執行了處理程序

13.ReleaseRequestState:釋放請求的狀態。

14.PostReleaseRequestState:已經釋放了請求的狀態。

15.UpdateRequestCache:更新緩存。

16.PostUpdateRequestCache:已經更新了緩存。

17.LogRequest:請求的日志操作

18.PostLogRequest:已經完成請求的日志操作。

19.EndRequest:本次請求處理完成。

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