.Net通過(guò)將各語(yǔ)言先編譯成中間語(yǔ)言(IL),然后再執(zhí)行時(shí)用即時(shí)(Just In Time)編譯器將之編譯成本地平臺(tái)代碼來(lái)實(shí)現(xiàn)異構(gòu)平臺(tái)下對(duì)象的互操作,目前.Net支持的平臺(tái)有Windows,linux和Unix的支持正在開(kāi)發(fā)中。
.Net通過(guò)普通語(yǔ)言運(yùn)行時(shí)(Common Language Runtime)來(lái)實(shí)現(xiàn)資源對(duì)象,類(lèi)型的安全。
三 .Net中的普通語(yǔ)言運(yùn)行時(shí)(Common Language Runtime)指什么?它在.Net中處什么位置?
CLR(Common Language Runtime)普通語(yǔ)言運(yùn)行時(shí)是整個(gè).net framework構(gòu)建的基礎(chǔ),是實(shí)現(xiàn).Net跨平臺(tái),跨語(yǔ)言,代碼安全等核心特性的關(guān)鍵。它實(shí)際上是駐留在內(nèi)存里的一段代理代碼,負(fù)責(zé)在整個(gè).net整個(gè)執(zhí)行期間的代碼管理工作,比較典型的有:內(nèi)存管理,線程管理,遠(yuǎn)程管理,代碼強(qiáng)制安全類(lèi)型等。這些都可稱得上.net framework的生命線。實(shí)際上,普通語(yǔ)言運(yùn)行時(shí)代理了一部分操作系統(tǒng)的管理功能。
.Net語(yǔ)言的互操作性是指遵循普通語(yǔ)言運(yùn)行時(shí)(Common Language Runtime)規(guī)范的語(yǔ)言在對(duì)象繼承方面的支持,即用一種語(yǔ)言在.Net平臺(tái)下開(kāi)發(fā)的類(lèi)可在另一語(yǔ)言中重用,這通過(guò)一種稱作微軟中間語(yǔ)言MIL來(lái)實(shí)現(xiàn),即語(yǔ)言編譯器首先將該語(yǔ)言編譯成微軟中間語(yǔ)言,再在相應(yīng)平臺(tái)下編譯出本地代碼。這一切都是在普通語(yǔ)言運(yùn)行時(shí)的規(guī)范下進(jìn)行。
六 .Net支持的平臺(tái)有哪些?它的跨平臺(tái)實(shí)現(xiàn)得如何?
目前支持.Net的平臺(tái)有Windows 2000, NT4 SP6a, Windows Me和Windows 98。其聲稱支持的平臺(tái)有Unix,Linux等,目前有三個(gè)項(xiàng)目正在開(kāi)發(fā)Linux下的.Net平臺(tái):Ximian公司的Mono項(xiàng)目,DotGNU以及 Potable .NET.
.Net中的中間語(yǔ)言是指可以在普通語(yǔ)言運(yùn)行時(shí)規(guī)范下,.執(zhí)行時(shí)通過(guò)即時(shí)(Just In Time)編譯器轉(zhuǎn)化為本地代碼的,與CPU獨(dú)立的一族指令集合。它在.Net平臺(tái)中是實(shí)現(xiàn)語(yǔ)言互操作的一個(gè)核心環(huán)節(jié),所有.Net平臺(tái)的語(yǔ)言都要先被編譯成中間語(yǔ)言(IL)。程序員也可以直接利用中間語(yǔ)言(IL)來(lái)編程,但不推薦那樣做,中間語(yǔ)言對(duì)理解.Net對(duì)象某些行為和程序的調(diào)試很有幫助
.Net的受管代碼(Managed Code)是指符合普通語(yǔ)言運(yùn)行時(shí)(Common Language Runtime)規(guī)范,在內(nèi)存中受運(yùn)行時(shí)代碼代理進(jìn)行內(nèi)存管理,線程管理,遠(yuǎn)程管理,代碼強(qiáng)制安全類(lèi)型的代碼。非受管代碼指對(duì)內(nèi)存,文件,數(shù)據(jù)庫(kù)等非受管資源進(jìn)行操作的代碼,他們通常不受運(yùn)行時(shí)代碼代理管理,是不安全的。對(duì)受管代碼的編程只需專(zhuān)注于編程的邏輯,對(duì)于內(nèi)存等資源的管理交由普通語(yǔ)言運(yùn)行時(shí)(Common Language Runtime)來(lái)負(fù)責(zé),而對(duì)非受管代碼的編程,則要開(kāi)發(fā)人員精心負(fù)責(zé)各種非受管資源的分配和回收工作。