.NET框架概述
.NET 框架為.NET應用程序運行提供虛擬機環境,為.NET應用程序提供編譯、運行、內存管理、垃圾回收、安全等服務。
?
.NET框架組成部分
1.公共語言運行時(Common Language Runtime,CLR)
2.NET框架類庫(并非.NET框架中的所有類庫代碼都是純粹的托管代碼編寫的,.NET框架中有相當數量的類是對Win32 API的封裝)
?
托管代碼
使用.NET公共語言運行時提供的代碼,反之為非托管代碼(如 Win32 API)
?
通用語言組織框架(CLI Common Language Infrastructure)
規定如何在運行庫中聲明、使用和管理類型,同時也是運行庫支持跨語言互操作的一個重要組成部分
1.建立一個支持跨語言集成、類型安全和高性能代碼執行的框架
2.提供一個支持完整實現多種編程語言的面向對象模型
3.定義各個語言必須遵守的規則,有助于確保用不同語言編寫的對象能夠交互作用
?
公共語言運行時(CLR)
負責管理.NET應用程序編譯、運行、代碼類型安全檢查、內存分配、線程管理、安全、垃圾回收等服務,為.NET應用程序提供一個虛擬的運行環境
?
通用類型系統(CTS Common Type System)
CTS定義了一個類型庫,無論是VB還是C#,他們的數據類型都是一致的,因此.NET將各種不同的編程語言的數據類型進行抽象,就誕生了CTS。
CTS類型主要分為:值類型和引用類型 http://wenku.baidu.com/link?url=LHBzlpJ8zHnLvsNzcmGxjpGgOolfq721gDvoVTY7gtNHTUbmhf_Zv8z0GliZECRuyg020kqZhZEtWVawStyqJZGxAFoDSMvva411vNACau7
?
公共語言規范(CLS Common Language Specification)
CLS是CTS的子集,目標是讓.NET平臺上用不同的編程語言編寫的對象之間可以互相調用
?
CTS、CLR、CLS 三者關系如下:

?
值類型:存儲在內存的堆棧中,快速訪問,超出作用范圍自動釋放內存,垃圾回收機制不參與回收。
引用類型:分配在內存中,默認NULL ,在棧中分配內存的地址,操作時通過指針尋找,通過垃圾回收機制回收。將一個引用類型變量的內容賦值給另一個引用類型的變量時,只是變量的內存地址被拷貝。
?
裝箱:將值類型轉換成引用類型 int i=0; object o=i;
拆箱:將引用類型轉換為值類型 int i=0;object o=i;int j=(int)o;
裝箱和拆箱對性能損耗是有影響的。
?
即時編譯(JIT)
?
NGEN(本機映像生成器)編譯
本機映像生成器(Ngen.exe)是一個提高托管應用程序性能的工具。Ngen.exe創建本機映像(包含經編譯的特定于處理器的機器代碼的文件),并將它們安裝到本地計算機上的本機映像緩存中。運行庫可從緩存中使用本機映像,而不是使用實時編譯器編譯原始程序集。
?
中間語言(MSIL 現在稱為CIL Common Intermediate Language)
?
參考《C#4.0權威指南》
新聞熱點
疑難解答