.NET 框架
.NET
.NET框架由3部分組成究飞,嚴(yán)格來(lái)說(shuō).NET框架由CLR(Common Language Runtime,公共語(yǔ)言運(yùn)行庫(kù))和FCL(Framework Class Library申眼,框架類庫(kù))兩部分組成矛缨,不包括工具。FCL是BCL(Base Class Library岩遗,基類庫(kù))的超集萄焦,包括Windows Forms控轿、ASP.NET、LINQ以及更多的命名空間拂封。
.NET框架
執(zhí)行環(huán)境CLR
.NET框架的核心組件是CLR茬射,它在操作系統(tǒng)的頂層,負(fù)責(zé)管理程序的執(zhí)行冒签。執(zhí)行環(huán)境CLR在運(yùn)行時(shí)管理程序的執(zhí)行在抛,包括:
- 內(nèi)存管理和垃圾收集
- 代碼安全驗(yàn)證
- 代碼執(zhí)行、線程管理萧恕、異常處理
執(zhí)行環(huán)境CLR
編譯成CIL
.NET語(yǔ)言的編輯器接受源代碼文件刚梭,并生成名為程序集的輸出文件档悠。
- 程序集要么是可執(zhí)行的,要么是DLL望浩。
- 程序集里的代碼并不是本機(jī)代碼,而是一種名為CIL(Common Intermediate Language惰说,公共中間語(yǔ)言)的中間語(yǔ)言磨德。
編譯過(guò)程
編譯時(shí)和運(yùn)行時(shí)
編譯時(shí)和運(yùn)行時(shí)過(guò)程
編譯成本機(jī)代碼并執(zhí)行
程序的CIL直到它被調(diào)用運(yùn)行時(shí)才會(huì)被編譯成本機(jī)代碼。在運(yùn)行時(shí)吆视,CLR執(zhí)行的步驟:
- 檢查程序集的安全特性
- 在內(nèi)存中分配空間
- 把程序集中的可執(zhí)行代碼發(fā)送給實(shí)時(shí)編譯器(JIT典挑,Just-in-Time),將其中一部分編譯成本機(jī)代碼啦吧。
運(yùn)行時(shí)被編譯成本機(jī)代碼
公共語(yǔ)言基礎(chǔ)結(jié)構(gòu)CLI
CLI(Common Language Infrastructure您觉,公共語(yǔ)言基礎(chǔ)結(jié)構(gòu))是一組標(biāo)準(zhǔn),每種編程語(yǔ)言都有一組內(nèi)置的類型授滓,用來(lái)表示如整數(shù)琳水、浮點(diǎn)數(shù)、字符等之類的對(duì)象般堆。這些類型的特性因編程語(yǔ)言和平臺(tái)的不同而不同在孝。然后,這種統(tǒng)一性的缺乏使得難以讓不同語(yǔ)言編寫的程序及庫(kù)一起良好寫作淮摔。
CLI