1. 程式人生 > >“菜”鳥理解.NET Framework(CLI,CLS,CTS,CLR,FCL,BCL)

“菜”鳥理解.NET Framework(CLI,CLS,CTS,CLR,FCL,BCL)

能夠 所有 int32 mon 運行時 bsp lan http mage

既然要學.NET,就要先認識認識她,我不喜歡大段大段文字的東西,自己通過理解,畫個圖,來看看.NET的沈魚落雁,閉月羞花之容。

技術分享圖片

  最下層藍色部分是.NET Framework的基礎,也是所有應用軟件的基礎。.NET Framework不是憑空出來的,實際上API,COM+,和一些相關驅動依然是它的基石。.NET Framework只不過是對這些前輩們進行了系統的封裝和擴充,在這個過程中,吸取了Java框架的很多經驗。關於Win32 API與.NET Framework API的對應關系,可以參考Microsoft Win32 to Microsoft .NET Framework API Map

  菜譜:除了藍色部分以外,其他均為.NET Framework的主體。它是基於通用語言基礎架構(Common Language Infrastructure,CLI)。它就像一本江湖上失傳已久的菜譜。

  廚師通用語言運行平臺(Common Language Runtime,CLR),是對CLI這個架構在Windows平臺的實現。簡單地理解就是CLR這個廚師,讓CLI這本菜譜發揮了其真正的作用。

  下面我們來嘗嘗這些佳肴:

  食物類庫(Framework Class Library,FCL),所有在.NET能夠使用的類庫。分為兩部分,一部分為原料,另一部分為成品菜

  • 原料
    基類庫Base Class Library(BCL) ,顧名思義,其中包含一些基礎的類,如:IO,String,Net等等。它們是做菜所必需的原料,當然也可以直接吃。
  • 成品菜FCL中的其他類。這些類庫基本上都是引用BCL,在這些類庫的基礎上做的擴充。如:ADO.NET,ASP.NET,Windows.Forms等等,它們是我們編寫程序更加方便,專一。

  餐具公共語言規範Common Language Specification (CLS)公共類型系統Common Type System (CTS) ,是CLI的一部分內容,它們的目的是保證各種語言與.NET Framework的兼容性的。就好像有的食客習慣用筷子,有的則喜歡用叉子,像八戒就用九齒釘耙。有了CLS

CTS,各路食客就能使用自己喜歡用的餐具吃上可口的食物了。例如:把C#中的int和VB中的Integer統一映射到System.Int32。

  食客:各種語言,C#,VB,等等。

  至於食客們是怎麽吃這些東西的,可以參考深入探索.NET框架內部了解CLR如何創建運行時對象,這篇文章詳細的解釋了,.NET是如何運行的,涉及一些底層的東西,大家了解就行,不必深究。

  好了,這是我自己對.NET Framework的一點理解,可能比喻有不恰當的地方,甚至有概念性的錯誤,希望大家指出來。我畢竟是初學者,大家的批評會幫助我成長。謝謝!

“菜”鳥理解.NET Framework(CLI,CLS,CTS,CLR,FCL,BCL)