CIL(common intermediate language):公共中間語言。.net框架下各種種類、版本的編程語言在經過編譯后生成的中間語言(后綴為.il),與平台無關、與語言無關,只要機器上運行了.net框架都可以運行.il文件。
BCL(basic class library):基類庫。包含基礎的類型(比如Console、string),為IL提供基礎的編程支持,所有面向CIL的語言都可以使用這個類庫。
FCL(framework class library):框架類庫。BCL是FCL的一個子集,【應該】包含了所有的.net類。
CTS(common type system):公共類型系統。當自己要設計一種面向.net的高級語言時,都要遵循的規范就是CTS,比如C#。任何面向.net的語言都要滿足CTS的要求,但不必實現CTS中所有的標准與規定,但語言本身不能有違背CTS的地方。這樣的語言編譯后生成CIL。
CLS(common language specification):公共語言規范。一種面向.net的語言在引用另一種面向.net的語言的公開程序集的時候(即修飾符為public,若為private、protected等,則一定不能被其他語言引用),這兩種語言需要滿足一定的規范,即CLS。CLS是CTS的一個子集。絕大部分的FCL都滿足CLS,只有極個別特殊的不滿足,這就使得面向.net的程序語言都可以使用FCL中的類型。
CLR(common language runtime):公共語言運行時。當執行.exe和程序集的時候,負責運行程序、程序集的就是CLR。在程序集中包含的CIL還不是機器能夠執行的指令,CLR管理了.net程序集的執行,包括:加載和運行程序集、安全檢查、將CIL代碼即時編譯為機器代碼等。runtime雖然有時間,但是CLR和時間並沒有關系。相對於編譯時,CLR發生在程序的運行過程中。具體可舉例子理解:在程序執行時,CLR會找到並加載main(),然后執行下面的程序。這樣做,有了CLR,可以使.net程序集跨平台使用,和Java虛擬機相似。
CLI(common language infrastructure):公共語言基礎。一個國際標准。.net框架只是CLI的一個具體實現,所以,還有其他的實現。
參考資料:.NET體系結構圖(Kimma)