首先 咱們來理解這個幾個相關概念。php
一、什麼是.NET框架?web
.NET框架(.NET Framework) 是由微軟開發,一個致力於敏捷軟件開發(Agile software development)、快速應用開發(Rapid application development)、平臺無關性和網絡透明化的軟件開發平臺。.NET是微軟爲下一個十年對服務器和桌面型軟件工程邁出的第一步。NET包含許多有助於互聯網和內部網應用迅捷開發的技術。編程
.NET框架是微軟公司繼Windows DNA以後的新開發平臺。.NET框架是以一種採用系統虛擬機運行的編程平臺,以通用語言運行庫(Common Language Runtime)爲基礎,支持多種語言(C#、VB.NET、C++、Python等)的開發。api
.NET也爲應用程序接口(API)提供了新功能和開發工具。這些革新使得程序設計員能夠同時進行Windows應用軟件和網絡應用軟件以及組件和服務(web服務)的開發。.NET提供了一個新的反射性的且面向對象程序設計編程接口。.NET設計得足夠通用化從而使許多不一樣高級語言都得以被聚集。安全
二、什麼是通用語言架構?服務器
通用語言基礎架構(Common Language Infrastructure,簡稱CLI)是一個開放的技術規範。它是由微軟聯合惠普以及英特爾於2000年向ECMA倡議的。通用語言基礎架構定義了構成.NET Framework基礎結構的可執行碼以及代碼的運行時環境的規範,它定義了一個語言無關的跨體系結構的運行環境,這使得開發者能夠用規範內定義的各類高級語言來開發軟件,而且無需修正便可將軟件運行在不一樣的計算機體系結構上。網絡
CLI有時候會和CLR混用。但嚴格意義上說,這是錯誤的。由於CLI是一種規範,而CLR則是對這種規範的一個實現。架構
CLI標準包包含如下更詳細的規範app
適合CLI規範的程序都是編譯成通用中間語言,以後在執行過程當中被虛擬執行系統的即時編譯技術編譯爲機器碼從而執行。框架
三、什麼是通用語言運行庫?
通用語言運行平臺(Common Language Runtime,簡稱CLR)是微軟爲他們的.NET的虛擬機所選用的名稱。這是通用語言架構(簡稱CLI)的微軟實現版本,它定義了一個代碼運行的環境。CLR運行一種稱爲通用中間語言的字節碼,這個是微軟的通用中間語言實現版本。
CLR的主要功能以下
開發人員使用高級編程語言撰寫程序。接下來編譯器將代碼編譯成微軟的中繼語言(MSIL)。運行的時候CLR會將MSIL碼轉換爲操做系統的原生碼(Native code)。CLR自帶有實時編譯)編譯器。
CLR運行在微軟的視窗操做系統上。查看通用語言架構能夠找到該規格的實現版本列表。其中有一些版本是運行在非Windows的操做系統中。
四、什麼是微軟中間語言?
通用中間語言(Common Intermediate Language,簡稱CIL,發音爲"sill"或"kill")是一種屬於通用語言架構和.NET框架的低階(lowest-level)的人類可讀的編程語言。目標爲.NET 框架的語言被編譯成CIL,而後彙編成字節碼。CIL相似一個面向對象的彙編語言,而且它是徹底基於堆棧的。它運行在虛擬機上,其主要的語言有C#、Visual Basic .NET、C++/CLI以及 J♯。
在.NET語言的測試版中,CIL本來叫作微軟中間語言,即Microsoft Intermediate Language,簡稱MSIL。因爲C#和通用語言架構的標準化,在.Net開發平臺下,全部語言(C#、VB.NET、J#、Managed C++)都會被編譯爲MSIL,再由CLR負責運行,字節碼如今已經官方地成爲了CIL。所以,CIL仍舊常常與MSIL相提並論,特別是那些.NET語言的老用戶。