iis6.0与asp.net的运行原理
這幾天上網(wǎng)翻閱了不少前輩們的關(guān)于iis和asp.net運行原理的博客,學的有點零零散散,花了好長時間做了一個小結(jié)(雖然文字不多,但也花了不少時間呢),鄙人不才,難免有理解不道的地方,還望前輩們不吝賜教。
這篇博客主要是描述asp.net程序在iis6.0上的一個執(zhí)行過程。
執(zhí)行過程圖:
?
組件描述
HTTP.SYS:
Win2003和winXP SP2的核心操作系統(tǒng)組件,,能夠讓任何應(yīng)用程序通過它提供的接口,以http協(xié)議進行信息通訊。
優(yōu)點:
簡單來說它是獨立于IIS之外的,任何http請求都會首先被它偵聽到
W3SVC:
? ? ? ?1.?沒有第三方應(yīng)用程序的代碼
? ? ? ?2.?根據(jù)配置數(shù)據(jù)的設(shè)置創(chuàng)建和監(jiān)視w3wp.exe,由工作線程運行Web網(wǎng)站應(yīng)用。
? ? ? ?3.?總是處于運行狀態(tài),因此它能夠監(jiān)視Web應(yīng)用的健康狀況,并在必要時采取行動。由于這一策略,服務(wù)器能夠根據(jù)用戶指定的參數(shù)監(jiān)視和重新啟動應(yīng)用程序。
Application Pool(應(yīng)用程序池):
? ? ? ?1.?在IIS6.0中,每一個用戶web應(yīng)用程序都會運行在一個應(yīng)用程序池中。這個應(yīng)用程序池可以是IIS默認的應(yīng)用程序池,也可以是用戶自定義的應(yīng)用程序池。
? ? ? ?2.作為一個宿主程序,每個應(yīng)用程序池中都會運行著一個或者多個用戶web應(yīng)用程序。
? ? ? ?3.在應(yīng)用程序池中,存在著一個或者多個工作進程(一個以上叫Web園)。每個工作進程只能屬于一個特定的應(yīng)用程序池,由這些工作進程來負責管理應(yīng)用程序池中的用戶web應(yīng)用程序。
w3wp.exe(工作進程):
默認情況下,IIS 6.0在工作進程隔離模式下運行,在這種模式中,對于每一個Web應(yīng)用,IIS 6.0都用一個獨立的w3wp.exe的實例來運行它。?因此,工作進程隔離模式不存在 ? ? ? ? ?進程內(nèi)(In-Process)應(yīng)用程序存在的問題,有效地提高了可靠性和安全性。可靠性的提高是因為一個Web應(yīng)用的故障不會影響到其他Web應(yīng)用,也不會影響http.sys,每一 ? ? ? ?個Web應(yīng)用由W3SVC單獨地監(jiān)視其健康狀況。安全性的提高是由于應(yīng)用程序不再象IIS 5.0和IIS4.0的進程內(nèi)應(yīng)用那樣用System帳戶運行,默認情況下,w3wp.exe的所有 ? ? ? ?實例都在一個權(quán)限有限的“網(wǎng)絡(luò)服務(wù)”帳戶下運行,必要時,還可以將工作進程配置成用其他用戶帳戶運行。
Metabase(元數(shù)據(jù)):
執(zhí)行過程
Application暴露出的事件
1.BeginRequest:asp.net開始處理請求的第一個事件,表示處理的開始。
2.AuthenticateRequest:驗證請求,一般用來取得請求的用戶信息。
3.PostAuthenticateRequest:已經(jīng)獲取請求的用戶信息。
4.AuthorizeRequest:授權(quán),一般用來檢查用戶的請求是否獲得權(quán)限。
5.PostAuthorizeRequest:用戶請求已經(jīng)獲得授權(quán)。
6.ResolveRequestCache:獲取以前處理緩存的處理結(jié)果,如果以前緩存過,那么,不用再進行請求的處理工作,直接返回緩存的結(jié)果。
7.PostResolveRequestCache:已經(jīng)完成緩存的處理工作。
8.PostMapRequestHandler:已經(jīng)根據(jù)用戶的請求,創(chuàng)建了請求的處理器對象。
9.AcquireRequestState:取得請求的狀態(tài),一般用于session
10.PostAcquireRequestState:已經(jīng)獲得了session
11.PreRequestHandlerExecute:準備執(zhí)行處理程序。
12.PostRequestHandlerExecute:已經(jīng)執(zhí)行了處理程序
13.ReleaseRequestState:釋放請求的狀態(tài)。
14.PostReleaseRequestState:已經(jīng)釋放了請求的狀態(tài)。
15.UpdateRequestCache:更新緩存。
16.PostUpdateRequestCache:已經(jīng)更新了緩存。
17.LogRequest:請求的日志操作
18.PostLogRequest:已經(jīng)完成請求的日志操作。
19.EndRequest:本次請求處理完成。
轉(zhuǎn)載于:https://www.cnblogs.com/cheesebar/p/6154666.html
總結(jié)
以上是生活随笔為你收集整理的iis6.0与asp.net的运行原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VS2017中的附加到进程
- 下一篇: ASP.NET-权限管理五张表