從.NET類庫代碼來看ASP.NET運行時[2]
關鍵字: .net 好,現在我們知道了ISAPIRuntime對象是托管代碼的入口點,那么這個對象是什么時候產生的呢?換句話說,w3wp也是一個非瀀?潳楬?托管代碼寫出的程序,它是在什么時候把.net運行時加載進來的呢?(如果好奇心再強一點,還可以問一問一個工作進程是
關鍵字:
.net好,現在我們知道了ISAPIRuntime對象是托管代碼的入口點,那么這個對象是什么時候產生的呢?換句話說,w3wp也是一個非瀀?潳楬?托管代碼寫出的程序,它是在什么時候把.net運行時加載進來的呢?(如果好奇心再強一點,還可以問一問一個工作進程是什么時刻產生并開始運行的,它和應用程序池有著怎樣的交互。)完全解釋清楚這些問題已經超過了筆者目前的能力范圍,還望高人補充或提供資料線索。但目前我們從.net的代碼中應該可以推斷出,ISAPIRuntime對象和應用程序域是對應的,.net在創建應用程序域的時候,就會創建ISAPIRuntime對象,見下面的創建應用程序域的代碼:
創建應用程序域
1/**//*這是System.Web.Hosting.AppDomainFactory類型的Create方法,它調用的是實際工廠的Create方法。*/
2[return: MarshalAs(UnmanagedType.Interface)]
3public object Create(string module, string typeName, string appId, string appPath, string strUrlOfAppOrigin, int iZone)
4{
5 /**//*實際工廠是一個AppManagerAppDomainFactory類型的對象。*/
6 return this._realFactory.Create(appId, appPath);
7}
8
9/**//*AppManagerAppDomainFactory.Create方法,請看代碼內的注釋。*/
10[return: MarshalAs(UnmanagedType.Interface)]
11public object Create(string appId, string appPath)
原文轉自:http://www.anti-gravitydesign.com