C CLI

C /CLI
一.我的定義與功能
C /CLI是一門由微軟
(圖).NET Framwork.NET Framwork
公司發起的由通過ECMA(Standard ECMA-372)標準化的接合ISO C 擴展出來(主要在ISO C 在操作.net方面的擴展)的一門面向對象的計算機語言。最新的開發環境是Visual Studio 2008,其中express版是免費的。
二.ISO C 和CLI的無縫連線
C /CLI支持對本地ISO C 編程和.NET託管編程的無縫集成,而且可以實現類型class級和ISO C 和.NET類庫的相互使用,更強的是能夠實現類型的混合。為了實現無縫連線,絕大多數的以前的ISO C 代碼編譯後將得到託管代碼,部分不能編譯為託管IL的採用P/Invoke調用實現。在混合編程中,原來ISO C 中本地堆內的數據仍位於本地堆中,調用的託管類型在託管中運行,由.net負責分配記憶體和回不需要手動回收(有些資源除外比如說打開的檔案,網路連線等)。
三.ISO C 語言
C 是一門ISO的面向對象的語言,對於這門語言我們也從以下三個方面來看,也正是這三個主要方面決定了他被廣泛的使用。
第一,C 是一個功能強大的語言。比如C 語言本身提供的基於C語言的內嵌類型,數組,結構體和指針等,C 比C新加入的面向對象的Class,繼承,多態和模板等,還有C 標準模板庫(STL)提供的實際開發當中常用的數據結構和算法的實現;
第二,大量的開源和第三方庫,如果在windows上使用C 開發,首先我們可以藉助microsoft對C 提供的強有力的支持,比如說VS編譯器,還有UI庫MFC,還有ATL等;除此之外我們還可以看到其他的許多非microsoft的開源的和第三方的支持,比如說Boost很大程度的擴充了STL,提供了更多更高級的功能,還有Loki把C 與設計模式結合起來,還有很多的第三方的UI庫,比如QT,wxWindowsWTL,GTK等,第三方的網路通信庫,比如ACE,StreamModule等,第三方的XML庫,比如Xerces,CMarkup,tinyxml等,第三方的科學計算庫,比如Blitz ,MTL等,第三方的遊戲開發庫,比如 OGREKlayGE等,第三方的執行緒庫,比如C Threads,ZThreads等,還有其他的很多;
第三,C 的高性能。C 的這一特性也是毋庸質疑的,我們知道的大部分的作業系統,嵌入式開發,遊戲,圖像軟體離不開C ,這都是跟C 的高性能有很大的關係。
四.CLI CLI(Common Language Infrastructure,通用語言框架)
提供了一套可執行代碼和它所運行需要的虛擬執行環境的規範。更通俗的我們可以說它是一個虛擬平台,是作業系統和應用程式間的一層抽象。
微軟的.NET的基礎CLR(Common Language Runtime,通用語言運行時)就是CLI的一個實例。CLI主要的組成部分有:CTS,Metadata,CLS和VES。
1.CTS(Common Type System,通用類型系統)是CLI的基礎,它是一個類型規範,定義了所有CLI平台上可以定義的類型的集合,所有基於CLI的語言類型都是CTS的一個子集,目前C /CLI是對CTS描述支持最好的高級語言。
(圖)CLS是各種語實現的CTS的交集CLS是各種語實現的CTS的交集
2.Metadata(元數據):用來描述和引用CTS定義的類型,元數據以一種獨立於任何語言的形式存儲,正是元數據賦予了組建自描述的能力。
3.CLS(Common Language Specification,通用語言規範),是用以確保所有CLI語言能夠互操作的一組規則,它定義了所有CLI語言都必須支持的一個最小功能集(一個 CTS的子集)。各CLI語言可以選擇自己對CTS的一部分的映射,但是為了確保不同語言的互動,至少應該支持CTS所定義的最小功能集。
4..VES(Virtual Execution System,虛擬執行系統),為CLI程式提供了一個在各種可能的平台上載入和執行託管代碼的虛擬機環境,只是一個規範,比如微軟和mono項目就各有自己的實現(mono項目前只有C#的編譯器)。.NET的CLR的JIT和GC應該屬於此範圍。 .NET Framework是微軟對CLI的一個實現,當然也是目前最好的實現,.NET Framework主要包含CLR和BCL,CLR是核心也即CLI的實現,BCL是一套通用的代碼庫,可以被所有的.NET語言(C#, VB.NET, C /CLI)程式所使用。
五.總結
其實就是在ISO C 的基礎上擴展了.net環境下。

相關詞條

熱門詞條

聯絡我們