.NET框架概述 html
.NET 框架爲.NET應用程序運行提供虛擬機環境,爲.NET應用程序提供編譯、運行、內存管理、垃圾回收、安全等服務。 編程
.NET框架組成部分 緩存
1.公共語言運行時(Common Language Runtime,CLR) 安全
2.NET框架類庫(並不是.NET框架中的全部類庫代碼都是純粹的託管代碼編寫的,.NET框架中有至關數量的類是對Win32 API的封裝) 框架
託管代碼 編程語言
使用.NET公共語言運行時提供的代碼,反之爲非託管代碼(如 Win32 API) 工具
通用語言組織框架(CLI Common Language Infrastructure) post
規定如何在運行庫中聲明、使用和管理類型,同時也是運行庫支持跨語言互操做的一個重要組成部分 性能
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權威指南》