.NET的定義
.NET技術(shù)是微軟公司推出的一個(gè)全新概念纫雁,“它代表了一個(gè)集合、一個(gè)環(huán)境和一個(gè)可以作為平臺(tái)支持下一代Internet有可編程結(jié)構(gòu)服爷∧啵”.NET的最終目標(biāo)就是讓用戶在任何地方、任何時(shí)間救斑,以及利用任何設(shè)備都能訪問(wèn)所需的信息童本、文件和程序。
.NET開發(fā)平臺(tái)
.NET開發(fā)平臺(tái)包括.NET框架和.NET開發(fā)工具等組成部分脸候。
- .NET框架(Framework)是整個(gè)開發(fā)平臺(tái)的基礎(chǔ)穷娱,包括公共語(yǔ)言運(yùn)行庫(kù)(CLR)和框架類庫(kù)。
- .NET開發(fā)工具包括Visual Studio.NET集成開發(fā)環(huán)境和.NET編程語(yǔ)言运沦。
.NET Framework 結(jié)構(gòu)
- VB/C++/C#/j#開發(fā)語(yǔ)言及公共語(yǔ)言規(guī)范層(CLS)
- ASP.NET與UI層:WEB窗體和Windows窗體
- ADO.NET與XML層:數(shù)據(jù)訪問(wèn)服務(wù)泵额。所有的.NET配置文件都以XML為基礎(chǔ)。
- 基類庫(kù)(BCL携添,Base Class Library)嫁盲,定義所有的基本數(shù)據(jù)類型,還包含用于管理.NET核心特性(如文件,線程處理烈掠,串行化和安全性)的類羞秤。
- 公用語(yǔ)言運(yùn)行庫(kù)(CLR):負(fù)責(zé).NET基礎(chǔ)服務(wù),如內(nèi)存管理左敌、垃圾回收瘾蛋、結(jié)構(gòu)化異常處理,以及多線程等矫限。
- 操作系統(tǒng)層:Windows API和COM+服務(wù)
托管與非托管代碼
托管代碼:運(yùn)行在公共語(yǔ)言運(yùn)行時(shí) CLR 之上的代碼瘦黑;unsafe 代碼(例如指針)是非托管代碼。
程序集:就是指經(jīng)由編譯器編譯得到的,在 CLR 支持下編譯執(zhí)行的代碼幸斥。如項(xiàng)目編譯后得到的 dll、exe 文件咬扇。
.NET語(yǔ)言默認(rèn)生成的都是托管代碼甲葬,這種代碼在運(yùn)行庫(kù)的控制之下運(yùn)行;
- . NET編譯生成的可執(zhí)行文件是一種托管代碼,稱為微軟中間語(yǔ)言(MSIL,MicroSoft Intermediate Language),可以“一次編寫懈贺,隨處運(yùn)行”经窖,前提是有框架的支持。是獨(dú)立于CPU的指令集,它可以被高效地轉(zhuǎn)換為特定于某種CPU的指令梭灿。
- 基于Linux的mono項(xiàng)目画侣。
CTS、CLS堡妒、CLR配乱、IL
CTS:通用類型系統(tǒng)、CLS:通用語(yǔ)言規(guī)范皮迟、CLR:公共語(yǔ)言運(yùn)行時(shí)(庫(kù))搬泥、IL:中間語(yǔ)言;
GC垃圾收集器(Garbage Collection)
垃圾收集器會(huì)自動(dòng)進(jìn)行管理伏尼,因此程序員不用擔(dān)心內(nèi)存管理忿檩。GC 只能處理托管內(nèi)存資源的釋放,對(duì)于非托管資源則不能使用 GC 進(jìn)行回收爆阶,必須由程序員手工回收燥透,一個(gè)例子就是 FileStream 或者 SqlConnection 需要程序員調(diào)用 Dispose 進(jìn)行資源的回收。要請(qǐng)求垃圾收集辨图,可以調(diào)用:GC.Collect()班套,一般不需要手動(dòng)調(diào)用。當(dāng)一個(gè)對(duì)象沒(méi)有任何變量指向(不再能使用)的時(shí)候就可以被回收(不一定馬上回收)徒役。