1. 程式人生 > >ASP.NET Process Model之一:IIS 和 ASP.NET ISAPI

ASP.NET Process Model之一:IIS 和 ASP.NET ISAPI



上影象我們展示了
IIS 5.x如何處理一個基於ASP.NET Resource(以aspx為例)的Http Request的大體流程。首先使用者通過Browser請求一個aspx pageBrower向對於得Web Server,也就是目標主機的IIS。在上面我們提到過,IIS執行在一個稱為InetInfo.exe的程序中,InetInfo.exe是一個Native Executive,並非一個託管的程式。IIS分析Request的目標資原始檔的副檔名(這裡是aspx),通過ISAPI Extension Mapping獲知對應的ISPAIASP.NET ISAPI,於是載入aspnet_isapi.dll。到此為止,該
Request的處理交由ASP.NET ISAPI,處理。ASP.NET ISAPI會建立一個叫做aspnet_wp.exeWorker Process(如果該程序不存在的話),在aspnet_wp.exe初始化的時候會載入CLR,從而為ASP.NET Application建立一個託管的執行環境,在CLR初始化的使用會載入兩個重要的dllAppManagerAppDomainFactoryISAPIRuntime。通過AppManagerAppDomainFactoryCreate方法為Application建立一個Application Domain;通過ISAPIRuntime
ProcessRequest處理Request,進而將流程拖入到ASP.NET Http Runtime Pipeline的範疇,ASP.NET Http Runtime PipelineHttp Request的處理是一個相對複雜的過程,相關的介紹會放在本篇文章的下一部份。在這裡我們可以把它看成是一個黑盒,它接管Request,最終生成Html