[.NET] CTS、CLS和CLR

CTS、CLS和CLR是.NET框架的基本概念,但常被大家忽略。理解清楚這些概念,是有助於撰寫高效安全的.NET程式。
Understanding Relationship Between CTS and CLS

直接上圖!! (圖片來源)

  • CLR (Common Language Runtime) 公共語言執行庫:
    可視為一個包含執行.NET程式的引擎,以及一堆符合公共語言基礎(CLI)結構的類別庫集合。CLR是一份規範的實現,幾乎所有的.NET程式都是基於CLR的類別庫來實現,並且在CLR提供的執行引擎上執行。所謂的.NET框架就是指CLR。
     
  • CTS (Common Type System) 公共類型系統:
    微軟公司向ECMA提出一份語言和資料格式規格也就是CLI規格,包括了CTS、公共中間語言(CIL)、底部檔案格式以及中繼資料格式等。
    CTS定義一個能夠在CLR上執行的語言規範。就算有很多語言本身不符合CTS規範,但透過加強編譯器,改變語言附加規範等手段,使得許多語言還是能夠寫出在CLR上執行的程式。
     
  • CLS (Common Language Specification) 公共語言規範:
    CLS是CTS的一個子集合,定義了在.NET平台上執行的程式,使用的程式語言需符合的最小規範。
    因為.NET允許不同語言撰寫的程式一起執行,所以才制定出CLS規範,來避免不同語言特性產生的錯誤。