程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 關於ASP.NET與CLR相互關系的總結

關於ASP.NET與CLR相互關系的總結

編輯:關於ASP.NET

CLR(COM服務器)

CLR作為一個COM服務器實現在MSCorWks.dll文件中。安裝.NET Framework時,表示 CLR的COM服務器被注冊到Windows的注冊表裡。

MSCorEE.dll(墊片)

MSCorEE.dll的職責是判 斷創建何種版本的CLR。 非托管應用程序宿主調用MSCorEE.dll(shim)中CorBindToRuntimeEx函數或者另一個 相似的函數來創建CLR COM的實例。    

一台機器可以安裝多個版本的CLR,但在機器中只 有一個版本的MSCorEE.dll文件。

以上兩者之間的關系如下代碼所示(c++):     MSCorEE.dll(墊片)---->CLR(COM服務器)

Code highlighting produced by Actipro 

CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include <Windows.h>
#include <MSCorEE.h>
#include <stdio.h>
#pragma comment(lib,"mscoree.lib")
int main(int argc, CHAR* argv[])
{
    ICLRRuntimeHost *pClrHost;
    //調用<MSCorEE.h>中的CorBindToRuntimeEx()生成COM服務器
    HRESULT hr= CorBindToRuntimeEx(NULL, NULL, NULL, CLSID_CLRRuntimeHost, IID_ICLRRuntimeHost, 

(LPVOID*)&pClrHost); 
    //啟動clr
    pClrHost->Start();   
     //............................其他操作   
     //終止clr
     pClrHost->Stop();
     getchar();
     return 0;
}

應用程序域(AppDomain)

   一個應用程序域是一組程序集的一個容器。應用 程序域的全部目的就是提供隔離性。

上圖為一個單獨的Windows進程,該進程中運行著一個CLR COM服務器。該CLR中每個應用程序域都有自己的 加載器堆。(系統域,共享域,默認域#1,其他域#2)

一些特殊的程序集如MSCorLib.dll,它需要被 所有的應用程序域共享,那麼他就以一種對應用程序域保持中立的方式被加載,由CLR維護一個特殊的加載器 堆。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved