本文在最爲概略的層次上對.NET涉及的一些名詞進行解釋,編程
包括:api
通用語言基礎架構(Common Language Infrastructure, CLI)、網絡
虛擬執行系統(Virtual Execution System, VES)、架構
通用中間語言(Common Intermediate Language, CIL)、app
通用語言運行平臺(Common Language Runtime, CLR)、框架
託管代碼(Managed Code)、編程語言
託管C++(Managed Extensions for C++)、工具
C++/CLI、開發工具
.NET框架(.NET Framework)。設計
CLI是一個開放技術規範,由微軟聯合惠普以及英特爾於2000年向ECMA倡議(連同C#語言標準),2001年12月被ECMA採納爲標準,2003年4月ISO也將其採納爲國際標準。它定義了一個語言無關的跨體系結構的運行環境,通俗的說它定義了一個虛擬機以及在這個虛擬機上運行的中間代碼(相似於Java虛擬機和Java字節碼),這個虛擬機叫作VES,中間語言叫作CIL。更具體的說CLI由如下幾部分組成:
通用類型系統(Common Type System, CTS)
元數據系統(Metadata)
通用語言規範(Common Language Specification, CLS)
虛擬執行系統(Virtual Execution System, VES)
通用中間語言(Common Intermediate Language, CIL)
框架(Framework)
值得一提的是, CIL本來叫作微軟中間語言,即Microsoft Intermediate Language, MSIL,是徹底基於堆棧的,它經過即時編譯(JIT)被VES加載到CPU上執行(這個Java字節碼的解釋執行有區別)。
CLR是CLI的微軟實現版本,用來支持.NET,是微軟爲他們的.NET的虛擬機所選用的名稱(這裏的虛擬機和上一段的有些不一樣)。
所謂託管代碼就是能在CLR上運行的代碼。
託管C++,又稱爲C++託管擴展(Managed Extensions for C++),是對C++的一個屬性和關鍵字的擴展,以便於在微軟公司的.NET Framework進行編程,是C++的超集。
C++/CLI,是由微軟設計,它在兼容原有的C++標準的同時,支持CLI標準(也就是能夠運行在CLR上),它已經被ECMA經過成爲正式的標準(一門新編程語言標準),它被用來代替託管C++。
.NET是由微軟開發,一個致力於敏捷軟件開發(Agile software development)、快速應用開發(Rapid application development)、平臺無關性和網絡透明化的軟件開發平臺。它以CLR爲基礎,通俗的說,.NET是微軟對CLI標準的實現,這個實現的同時提供了強大的服務(包括類庫、開發工具、編程語言的支持)。
下面把這些概念再理一下:
CLI是一個標準(或者說,規範),VES和CIL是其組成部分,CLR是微軟對CLI標準的實現(這個關係相似於G++和C++標準);
所謂託管代碼就是運行在CLR上的代碼,託管C++是微軟對C++的拓展,以使得它能在CLR上運行,從而和.NET集成,如今已經被C++/CLI取代,C++/CLI已經被採納爲標準,C++/CLI是一門區別於C++的新編程語言;
.NET是微軟給開發人員提供的平臺,以CLR爲基礎,是微軟對CLI的實現,C#是.NET平臺的首選編程語言。
參考文獻:
CLI:
http://en.wikipedia.org/wiki/Common_Language_Infrastructure
VES:
http://en.wikipedia.org/wiki/Virtual_Execution_System
CIL:
http://en.wikipedia.org/wiki/Common_Intermediate_Language
CLR:
http://en.wikipedia.org/wiki/Common_Language_Runtime
Managed Extensions for C++:
http://en.wikipedia.org/wiki/Managed_Extensions_for_C%2B%2B
C++/CLI :
http://en.wikipedia.org/wiki/C%2B%2B/CLI
.NET Framework :
http://en.wikipedia.org/wiki/.NET_Framework
注:以上參考連接均爲維基百科條目,可在左側選擇中文語言。