標籤:++ 設計 解釋執行 software cli dia ati 標準 聯合
本文在最為概略的層次上對.NET涉及的一些名詞進行解釋,
包括:
通用語言基礎架構(Common Language Infrastructure, CLI)、
虛擬執行系統(Virtual Execution System, VES)、
通用中繼語言(Common Intermediate Language, CIL)、
通用語言運行平台(Common Language Runtime, CLR)、
Managed 程式碼(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的虛擬機器所選用的名稱(這裡的虛擬機器和上一段的有些不同)。
所謂Managed 程式碼就是能在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++標準);
所謂Managed 程式碼就是運行在CLR上的代碼,託管C++是微軟對C++的拓展,以使得它能在CLR上運行,從而和.NET整合,現在已經被C++/CLI取代,C++/CLI已經被採納為標準,C++/CLI是一門區別於C++的新程式設計語言;
.NET是微軟給開發人員提供的平台,以CLR為基礎,是微軟對CLI的實現,C#是.NET平台的首選程式設計語言。
.NET涉及的一些名詞