首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 核心架構:IIS 與處理序模型深度剖析

     編輯:關於ASP.NET

ASP.NET 運行於 IIS 之上,透過 ISAPI 擴展接管動態請求。本文從 IIS 架構、ISAPI 對應、ASP.NET ISAPI 延伸(aspnet_isapi.dll)到處理序模型,完整勾勒請求從網卡到 Managed 代碼的旅程。

IIS 與 ISAPI 擴展

靜態資源(圖片、CSS、JS、HTML)由 IIS 直接讀取檔案系統並以位元組流回應。動態資源需經 ISAPI 擴展處理:IIS 依副檔名對應至特定 ISAPI DLL。例如 .asp 對應 asp.dll,.aspx 則對應 aspnet_isapi.dll。

IIS 5.0 ISAPI 對應設定

ASP.NET ISAPI 對應表

副檔名資源類型
.asaxASP.NET 應用程式檔(如 global.asax)
.ascx使用者控制項
.ashxHTTP Handler(ISAPI 擴展的 Managed 對應)
.asmxASP.NET Web Service
.aspxASP.NET 網頁
.axd內部 HTTP Handler(如 Trace.axd、WebResource.axd)

此外,aspnet_isapi.dll 也攔截 .config、.csproj、.resx 等敏感檔案,防止直接下載。

處理序模型演進

  • IIS 5.0 (ASP.NET 1.x):aspnet_isapi.dll 將請求轉交給 aspnet_wp.exe(Worker Process),單一處理序服務所有應用程式,隔離性較弱。
  • IIS 6.0+ (ASP.NET 2.0+):採用 應用程式集區,每個集區擁有獨立 w3wp.exe 處理序,支援多處理序隔離、回收、身分識別設定,大幅提升穩定性與安全性。

請求流向總覽

  1. 用戶端發送 HTTP 請求。
  2. IIS 接收,依副檔名查找 ISAPI 對應。
  3. 動態請求轉交 aspnet_isapi.dll。
  4. ISAPI 透過命名管道/共享記憶體將請求遞送至 Worker Process(aspnet_wp.exe 或 w3wp.exe)。
  5. Managed 管線啟動:HttpRuntime → HttpApplication → 模組/處理常式 → 頁面生命週期。

效能調優關鍵

  • 調整 processModel / 應用程式集區:maxWorkerThreads、maxIoThreads、回收條件。
  • 啟用 preCondition="integratedMode" 讓 Managed 模組參與 IIS 管線所有階段。
  • 監控 ASP.NET Applications\Request Execution Time、Requests Queued 等效能計數器。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved