最下層藍(lán)色部分是.NET Framework的基礎(chǔ),也是所有應(yīng)用軟件的基礎(chǔ)。.NET Framework不是憑空出來的,實(shí)際上API,COM+,和一些相關(guān)驅(qū)動(dòng)依然是它的基石。.NET Framework只不過是對(duì)這些前輩們進(jìn)行了系統(tǒng)的封裝和擴(kuò)充,在這個(gè)過程中,吸取了Java框架的很多經(jīng)驗(yàn)。關(guān)于Win32 API與.NET Framework API的對(duì)應(yīng)關(guān)系,可以參考Microsoft Win32 to Microsoft .NET Framework API Map
菜譜:除了藍(lán)色部分以外,其他均為.NET Framework的主體。它是基于通用語言基礎(chǔ)架構(gòu)(Common Language Infrastructure,CLI)。它就像一本江湖上失傳已久的菜譜。
廚師:通用語言運(yùn)行平臺(tái)(Common Language Runtime,CLR),是對(duì)CLI這個(gè)架構(gòu)在Windows平臺(tái)的實(shí)現(xiàn)。簡(jiǎn)單地理解就是CLR這個(gè)廚師,讓CLI這本菜譜發(fā)揮了其真正的作用。
下面我們來嘗嘗這些佳肴:
食物:類庫(kù)(Framework Class Library,FCL),所有在.NET能夠使用的類庫(kù)。分為兩部分,一部分為原料,另一部分為成品菜。
原料:基類庫(kù)Base Class Library(BCL) ,顧名思義,其中包含一些基礎(chǔ)的類,如:IO,String,Net等等。它們是做菜所必需的原料,當(dāng)然也可以直接吃。
成品菜:FCL中的其他類。這些類庫(kù)基本上都是引用BCL,在這些類庫(kù)的基礎(chǔ)上做的擴(kuò)充。如:ADO.NET,ASP.NET,Windows.Forms等等,它們是我們編寫程序更加方便,專一。
餐具:公共語言規(guī)范Common Language Specification (CLS) 和公共類型系統(tǒng)Common Type System (CTS) ,是CLI的一部分內(nèi)容,它們的目的是保證各種語言與.NET Framework的兼容性的。就好像有的食客習(xí)慣用筷子,有的則喜歡用叉子,像八戒就用九齒釘耙。有了CLS和CTS,各路食客就能使用自己喜歡用的餐具吃上可口的食物了。例如:把C#中的int和VB中的Integer統(tǒng)一映射到System.Int32。
食客:各種語言,C#,VB,等等。
語言的運(yùn)行可以參考深入探索.NET框架內(nèi)部了解CLR如何創(chuàng)建運(yùn)行時(shí)對(duì)象
.Net Framework是一個(gè)以規(guī)格為基礎(chǔ)的開發(fā)平臺(tái)。而這份規(guī)格統(tǒng)稱為CLI(Common Language
Infrastructure),而最初由Micrsoft依據(jù)這份規(guī)格所自行實(shí)現(xiàn)的產(chǎn)品就是CLR 。在CLI規(guī)格中,又細(xì)分為四個(gè)子規(guī)格。CIL(Common
Intermediate Language)、CTS(Common Type System)、在CTS中又細(xì)分CLS(Common
Language Specification)子規(guī)格和VES(Virtual Executing
System)。CLS包含大多數(shù)語言都能實(shí)現(xiàn)的類型,CLI規(guī)范支持CLI的程序語言至少必須滿足CLS的規(guī)格,這樣才能達(dá)到跨語言集成的目的。
支持CLI的程序語言必須擁有一個(gè)編譯器,該編譯器必須具備將源碼編譯成IL Code的能力,也就是CIL規(guī)格所定義的語言格式,然后交由CLR來運(yùn)行。在載入IL Code之后,CLR會(huì)調(diào)用JIT Complier(Just-In-Time Complier)將這些IL Code轉(zhuǎn)化為Native Code,也就是機(jī)器碼來運(yùn)行。
聯(lián)系客服