.net體系經(jīng)過十幾年發(fā)展,發(fā)生了很多變化。特別是在最近兩年,隨著開源和跨平臺的發(fā)展,衍生出很多概念,像標準庫,可移植庫,.Net Core等,相信有不少同學對他們之間的關(guān)系是有一些困惑的,這里我從基礎(chǔ)概念,跨框架開發(fā)的注意事項等,對.net的平臺和相關(guān)概念做一個普及分享。此分享是從個人的知識體系中總結(jié),如有不足,歡迎勘誤!
一. 基礎(chǔ)概念
.Net 本身是一個通用開發(fā)平臺,我個人的理解主要分位如下兩個層面:1. 語言層面,2. 運行時
首先:在語言層面上
面向 .net 平臺的頂層開發(fā)語言有很多,常見的如:C#,F(xiàn)#和Visual Basic等,.net框架提供了這些語言使用的公共語言運行時,運行時與具體的語言無關(guān),它定義了這些語言的公共規(guī)范,像類型系統(tǒng),文件格式等。
這些高級語言編寫的代碼被稱為托管代碼,這些代碼需要通過編譯器編譯為中間代碼(IL),然后由公共語言運行時(CLR)接管,再經(jīng)過JIT編譯為機器代碼交給cpu運行。
公共語言運行時自動處理對象布局并管理對象引用,當不再使用對象時釋放它們。 按這種方式實現(xiàn)生存期管理的對象稱為托管數(shù)據(jù)。 垃圾回收消除了內(nèi)存泄漏以及其他一些常見的編程錯誤。