十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
CLR(Common Language Runtime):公共語言運行時,是一個可由多種編程語言使用的"運行時";
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了興安免費建站歡迎大家使用!
在運行時,CLR根本不關(guān)心開發(fā)人員用的是哪一種語言來變寫代碼,它只關(guān)注語言是否是面向CLR(面向運行時)的.
內(nèi)存管理、程序集加載、安全性、異常處理和線程同步。
3:如圖:

無論是用的是哪一種編譯器,結(jié)果都是一個托管模塊(managed module),托管代碼時一個標(biāo)準(zhǔn)的32位/64位Microsoft Windows可移植執(zhí)行體(PE32/PE32+)文件.
本地代碼編譯器,生成的是面向特定CPU架構(gòu)(X86,X64或IA64)的代碼.相反,每個面向CLR的編譯器生成的都是IL(中間語言)代碼,IL代碼也被稱為托管代碼.
除了生成IL,面向CLR的每個編譯器還要在每個托管模塊中生成完整的元數(shù)據(jù),元數(shù)據(jù)是一組數(shù)據(jù)表.其中一些數(shù)據(jù)表描述了模塊中定義的內(nèi)容,元數(shù)據(jù)其實就是編譯器所生成的一些完整數(shù)據(jù).
4:CLR實際是不和模塊一起工作的,它是和程序集一起工作的.
5:加載公共語言運行時
我們生成的每個程序集既可以是一個可執(zhí)行應(yīng)用程序,也可以是一個DLL,最終是由CLR管理這些程序集中的代碼的執(zhí)行,所以必須在運行機器中安裝.NET FrameWork.WIndows一些版本系統(tǒng)已經(jīng)內(nèi)置打包了好了.NET FrameWork.不過需要我們手動的開啟.可以在控制面板中進行啟動在此就不做詳細(xì)解釋.作為開發(fā)人員,這是不需要解釋的.
執(zhí)行一個方法,第一必須把它的IL轉(zhuǎn)換為本地CPU指令,這是CLR的JIT的本質(zhì).
如圖:

就在Main方法執(zhí)行之前,CLR會檢測Main的代碼引用的所有的類型,這導(dǎo)致CLR分配一個內(nèi)部數(shù)據(jù)結(jié)構(gòu),用于管理對所引用的類型的訪問.
一個方法只有在首次調(diào)用時,才會造成一些性能損失,以后對該方法的所有調(diào)用都以本地代碼的形式全速運行.無需重新驗證IL并把它編譯成本地代碼.
JIT編譯器將本地CPU指令存儲到動態(tài)內(nèi)存中,一旦應(yīng)用程序終止,編譯好的代碼也會被丟棄,所以,如果將來再次運行應(yīng)用程序,或者同時啟動應(yīng)用程序的兩個實例,JIT編譯器必須再次將IL編譯成本地指令.
IL是基于棧的,所以它的所有指令都要將操作數(shù)壓入(push)一個執(zhí)行棧,并從棧彈出(POP)結(jié)果.由于IL沒有提供操作寄存器的指令,所以人們可以很容易地創(chuàng)建新的語言和編譯器,生成CLR的代碼.IL指令是無類型的.IL的好處在于是健壯和安全的,因為它編譯為CPU指令,CPU會進行驗證是否安全.
FCL(Framework Class Library):是一組DLL程序集的統(tǒng)稱,其中含有很多的類型定義,每個類型都公開了一些功能.
Web服務(wù):Web service 技術(shù)或者WCF技術(shù),可以非常簡單的處理通過Internet發(fā)送的消息.
Web窗體應(yīng)用程序:Web Form
Windows應(yīng)用程序:開發(fā)windows GUI應(yīng)用程序.
富Internet應(yīng)用程序:Silverlight技術(shù),可以構(gòu)建通過Internet來部署的GUI應(yīng)用程序.這種程序能在Web瀏覽器的內(nèi)部或外部運行,還可以在非Windows操作系統(tǒng)與移動設(shè)備傻瓜運行.
Window控制臺:提供簡單快捷方便的方式,生成應(yīng)用程序,編譯器.
Window服務(wù):可以通過.NET FrameWork 生成"服務(wù)"應(yīng)用程序.
數(shù)據(jù)庫存儲過程:編寫存儲過程
組件庫:.NET FrameWord允許生成獨立的程序集(組件),其中包含的類型可以輕松集成到任意的程序庫中.