核心:CLR(Common Language Runtime)

托管模塊
不管何種編譯器,最后生成的結果都是一個(gè)托管模塊(managed module),托管模塊是是一個(gè)需要CLR才能執行的標準Windows 可移植可執行文件(PE)。
IL是微軟在咨詢(xún)了一些商業(yè)和學(xué)術(shù)上的語(yǔ)言編譯器作者之后開(kāi)發(fā)的一種獨立于CPU的機器語(yǔ)言。
CPU目前還不能直接執行IL指令,但將來(lái)CPU也許會(huì )有這種能力,就目前來(lái)說(shuō),要執行一個(gè)方法,它的IL代碼還必須首先換成本地CPU指令,這屬于CLR中的即時(shí)編譯器的(JIT)工作。
程序集
CLR實(shí)際并不和模塊打交道,它直接打交道的對象是程序集(assembly)。程序集是一個(gè)抽象的概念,它是一個(gè)或者多個(gè)托管模塊,以及一些資源文件的邏輯組合。
對于一個(gè)可重用、可部署、可實(shí)施版本的組件來(lái)說(shuō),程序集允許我們分離它的邏輯表示和物理表示。完全可以將一些很少使用的類(lèi)型或者資源放在一些單獨的程序集文件中,然后根據需要從Web上下載。另外,程序集還是自描述的,CLR知道執行一個(gè)CLR的所有內容,不必再到注冊表或者其他地方找。

CTS
CLR中的所有類(lèi)型都是圍繞著(zhù)類(lèi)型展開(kāi)的,類(lèi)型為應用程序和組件提供了他們所需要的功能。類(lèi)型也作為一種機制使得一種語(yǔ)言編寫(xiě)的代碼可以和另一種語(yǔ)言編寫(xiě)的代碼進(jìn)行無(wú)縫地集成,由于類(lèi)型是CLR的基礎,MS專(zhuān)門(mén)為此制定了一個(gè)正式的規范,通用類(lèi)型系統(Common Type System,CTS)來(lái)描述類(lèi)型的定義和行為。
CTS還定義了諸多規則來(lái)管理類(lèi)型繼承,虛函數,對象生存期等事項,設計這些規則的目的是使得他們的語(yǔ)言可以用現代編程語(yǔ)言方便的表達出來(lái),實(shí)際上,我們甚至不需要學(xué)習CTS規則,因為我們選擇的語(yǔ)言已經(jīng)提供了我們所熟悉的語(yǔ)言語(yǔ)法和類(lèi)型規則,并且在生產(chǎn)托管模塊時(shí)會(huì )將這些特定語(yǔ)言的語(yǔ)法映射為CLR“語(yǔ)言”。
通用語(yǔ)言規范(Common Language Specification,簡(jiǎn)稱(chēng)CLS)
該規范為編譯器廠(chǎng)商詳細描述了面向CLR的編譯器必須支持的一個(gè)最小特性集合。CLR/CTS支持的特性要遠比CLS定義的子集豐富得多。
聯(lián)系客服