最近根據博客園大神的推薦,買了本《C#從現象到本質》。做一點讀書筆記。
由於不懂IL和ildasm,winddg,太深奧,理解不了,就牛嚼草一樣,先總結第一遍讀書,自己總結的知識點了。不知道這樣會不會侵權,如果侵權了,請告訴我,我撤銷這些。
第一部分“基礎知識”
第1章 .NET基礎知識
CLR:公共語言運行時
CTS:公共語言系統
CLS:公共語言規范
FCL:框架類庫
BCL:基礎類庫
CLI:公共語言基礎設施
DLR:動態語言運行時
TPL:任務並行庫
JIT:即時編譯
COM:組件對象模型
GAC:全局程序集緩存
.NET框架其最主要的兩個組成部分是公共語言運行時(CLR)和框架類庫(FCL),基礎類庫(BCL)是框架類庫的一個子集。運行於底層的是公共語言運行時CLR,它是公共語言基礎設施(CLI)的一個實現。CLR最主要的兩個組成部分是CTS(公共語言系統)和CLS(公共語言規范)。
.NET框架的主要結構
編程語言轉化成機器碼,轉化的過程分為兩種主要的形式,即編譯和解釋。
IL語言是一個基於棧的、面向對象的高級語言。
托管代碼是必須在CLR下執行的代碼,而非托管代碼則不需要CLR的支持就可以運行。
FCL就是我們用到的所有外部參考,而BCL是其中不需要手動引用的那部分。
不同的程序集可以共享一個命名空間。
程序集是一個可以寄宿於CLR中的、擁有版本號的、自解釋、可配置的二進制文件,程序集的擴展名為exe或dll。
CLR是和程序集一起工作的。
單模塊程序集的結構就是它的托管模塊加上清單和資源文件。在任何時候,IL代碼和元數據都是存在於托管模塊中的。
程序需要資源時才會加載對應的程序集。
IL中的關鍵字可以分為三類:指令、特性和操作碼。
程序集的IL和元數據支撐着.NET的運作。IL為各種框架語言建立了一個共同的編譯目標,也為接下來的JIT編譯做准備。JIT是最終翻譯為機器碼的編譯器,它會做更多的優化,並通過使用不同的編譯方式來利用這些優化。