日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

iis6.0与asp.net的运行原理

發布時間:2023/12/18 asp.net 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iis6.0与asp.net的运行原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

  執行過程圖:

?

組件描述

  HTTP.SYS:

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

  優點:

  • 緩存-靜態的內容被緩存于內核模式下,這使服務響應速度更快
  • 記錄(Log-IISLOG功能更快且標準化
  • 帶寬控制
  • 可靠性-所有的服務請求會在Http.sys里暫存入隊列,而不是由服務程序本身來處理,這樣,即使服務程序重啟,尚未被處理的請求也不會丟失了
  • 端口重用-?現在,只要是通過Http.sys管理的端口(基本包括了那些著名的端口,比如80),都可以同時允許多個程序同時監聽了。
  •   簡單來說它是獨立于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(元數據):

  • 保存配置數據
  • 有一個map保存應用程序池和工作進程的數據  
  • 執行過程

  • 在客戶端(一般指瀏覽器)輸入一個http://www.***.com/default.aspx/
  • HTTP.SYS首先偵聽到請求(靜態文件緩存于內核模式下)
  • W3SVC接收請求,判斷是否是靜態文件,靜態文件直接響應,否則將請求轉發給應用程序池的請求隊列,從元數據(通過WAS)中查找應用程序池數據,沒有則創建
  • WAS請求傳遞給應用程序池對應的工作進程,沒有就創建(創建時加載ISAPI)
  • ISAPI會根據ECH創建一個HttpWorkerRequest
  • 接下來進入應用程序域,由非托管代碼變為托管代碼(CLR)
  • HttpRuntime執行ProcessRequest方法產生HttpContext
  • HttpApplicationFactory執行GetApplicationInstance方法產生HttpApplication
  • HttpApplication執行一系列事件
  • 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:本次請求處理完成。

    轉載于:https://www.cnblogs.com/cheesebar/p/6154666.html

    總結

    以上是生活随笔為你收集整理的iis6.0与asp.net的运行原理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。