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

來源:互聯網
上載者:User

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維護一個特殊的載入器 堆。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.