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

ASP.NET 底層架構探索之進入 .NET 執行期

     編輯:關於ASP.NET

從 ISAPI 到 Managed Code:ISAPIRuntime 與 ECB 的交接細節

未文檔化的進入點

工作進程(IIS5: ASPNET_WP.EXE,IIS6: W3WP.EXE)載入 .NET 執行期與 ISAPI DLL,透過非受控 COM 介面 IISAPIRuntime 呼叫 ISAPIRuntime.ProcessRequest。

IISAPIRuntime 介面定義

ProcessRequest 簽章

[return: MarshalAs(UnmanagedType.I4)]
int ProcessRequest(
    [In] IntPtr ecb,
    [In, MarshalAs(UnmanagedType.I4)] int useProcessModel);
  • ecb:ISAPI Extension Control Block 非受控指標,含伺服器變數、表單輸入流、回應輸出流。
  • useProcessModel:是否使用處理序模型(IIS5 隔離模式)。

ECB 的角色

  • ASP.NET 內部以 ECB 為基礎 I/O 介面,建構 HttpRequest、HttpResponse。
  • ECB 在請求完成或逾時前保持存活,ASP.NET 可持續讀寫。
  • 輸出透過 ecb.WriteClient() 寫入 ISAPI 輸出流。

非同步處理模式

  1. ISAPI 擴充立即歸還執行緒給工作進程,ECB 維持可用。
  2. ASP.NET 於獨立執行緒續行處理。
  3. 完成後呼叫 ecb.ServerSupportFunction(HSE_REQ_DONE_WITH_SESSION) 通知 ISAPI 釋放 ECB。

效能優勢

Managed 類別僅是高效非受控 ECB 的**薄包裝**,避免資料複製,極大提升吞吐量。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved