核心:CLR(Common Language Runtime)
托管模塊
不管何種編譯器,最后生成的結(jié)果都是一個(gè)托管模塊(managed module),托管模塊是是一個(gè)需要CLR才能執(zhí)行的標(biāo)準(zhǔn)Windows 可移植可執(zhí)行文件(PE)。
IL是微軟在咨詢了一些商業(yè)和學(xué)術(shù)上的語(yǔ)言編譯器作者之后開(kāi)發(fā)的一種獨(dú)立于CPU的機(jī)器語(yǔ)言。
CPU目前還不能直接執(zhí)行IL指令,但將來(lái)CPU也許會(huì)有這種能力,就目前來(lái)說(shuō),要執(zhí)行一個(gè)方法,它的IL代碼還必須首先換成本地CPU指令,這屬于CLR中的即時(shí)編譯器的(JIT)工作。
程序集
CLR實(shí)際并不和模塊打交道,它直接打交道的對(duì)象是程序集(assembly)。程序集是一個(gè)抽象的概念,它是一個(gè)或者多個(gè)托管模塊,以及一些資源文件的邏輯組合。
對(duì)于一個(gè)可重用、可部署、可實(shí)施版本的組件來(lái)說(shuō),程序集允許我們分離它的邏輯表示和物理表示。完全可以將一些很少使用的類(lèi)型或者資源放在一些單獨(dú)的程序集文件中,然后根據(jù)需要從Web上下載。另外,程序集還是自描述的,CLR知道執(zhí)行一個(gè)CLR的所有內(nèi)容,不必再到注冊(cè)表或者其他地方找。
CTS
CLR中的所有類(lèi)型都是圍繞著類(lèi)型展開(kāi)的,類(lèi)型為應(yīng)用程序和組件提供了他們所需要的功能。類(lèi)型也作為一種機(jī)制使得一種語(yǔ)言編寫(xiě)的代碼可以和另一種語(yǔ)言編寫(xiě)的代碼進(jìn)行無(wú)縫地集成,由于類(lèi)型是CLR的基礎(chǔ),MS專(zhuān)門(mén)為此制定了一個(gè)正式的規(guī)范,通用類(lèi)型系統(tǒng)(Common Type System,CTS)來(lái)描述類(lèi)型的定義和行為。
CTS還定義了諸多規(guī)則來(lái)管理類(lèi)型繼承,虛函數(shù),對(duì)象生存期等事項(xiàng),設(shè)計(jì)這些規(guī)則的目的是使得他們的語(yǔ)言可以用現(xiàn)代編程語(yǔ)言方便的表達(dá)出來(lái),實(shí)際上,我們甚至不需要學(xué)習(xí)CTS規(guī)則,因?yàn)槲覀冞x擇的語(yǔ)言已經(jīng)提供了我們所熟悉的語(yǔ)言語(yǔ)法和類(lèi)型規(guī)則,并且在生產(chǎn)托管模塊時(shí)會(huì)將這些特定語(yǔ)言的語(yǔ)法映射為CLR“語(yǔ)言”。
通用語(yǔ)言規(guī)范(Common Language Specification,簡(jiǎn)稱(chēng)CLS)
該規(guī)范為編譯器廠商詳細(xì)描述了面向CLR的編譯器必須支持的一個(gè)最小特性集合。CLR/CTS支持的特性要遠(yuǎn)比CLS定義的子集豐富得多。
聯(lián)系客服