本篇已收錄至《C#圖解教程》讀書筆記目錄貼,點擊訪問該目錄可獲取更多內容。
一、在.NET之前的編程世界
C#語言是在微軟公司的.NET框架上開發程序而設計的,首先作者給大家糾正了一下C#的正確發音:See Sharp(而不是很多人說的什么C井之類的,每次聽到C井我都只能呵呵一笑)。
1.1 20世紀90年代末的Windows編程
這時大多數程序員使用VB、C或C++,一些C/C++程序員使用純Win32API,但純Win32API不是面向對象的,而且使用它的工作量很大,比MFC還大。大多數程序員在使用MFC(Microsoft Foundation Class,微軟基礎類庫),MFC是面向對象的,但是它卻不一致,並逐漸變得陳舊。其他的程序員開始轉向了COM(Component Object Model,對象組件模型),COM相對前兩者概念簡單,但它的實際代碼復雜,並且需要很多丑陋的、不雅的底層基礎代碼。
1.2 下一代平台服務的目標
執行環境的目標:安全、多平台、性能;
開發環境的目標:面向對象、一致的編程環境、使用行業標准進行通信、簡化的部署等;
二、.NET時代來臨
2002年,微軟發布了.NET框架的第一個版本,.NET框架是一種比MFC和COM編程技術更一致並面向對象的環境。
2.1 .NET框架的組成
.NET框架由三部分組成,如下圖所示。
(1)編程工具:IDE、編譯器、調試器、網站開發服務端技術(ASP.NET,WCF等);
(2)執行環境—CLR(公共語言運行庫):內存管理、垃圾回收、即時編譯等;
(3)BCL(基類庫):在.NET框架中使用的一個大的類庫,也可以在程序中使用;
2.2 大大改進的編程環境
面向的對象的開發環境、自動垃圾收集、互操作性、不需要COM等;
三、全新的編譯過程
3.1 編譯成CIL(公共中間語言)
.NET語言的編譯器接受源代碼文件,並生成名為程序集(程序集要么是可執行的,要么是DLL)的輸出文件。下圖闡述了這個過程。
3.2 編譯成本機代碼
程序的CIL直到它被調用執行時才會被編譯成本機代碼,在運行時,CLR執行如下圖所示的步湊。
這里有兩個名詞需要理解:
(1)托管代碼:使用.NET框架編寫的代碼成為托管代碼(Managed Code),需要CLR。
(2)非托管代碼:不在CLR控制下運行的代碼,比如Win32 C/C++ DLL,稱為非托管代碼(Unmanaged Code)。
四、核心組件—CLR:一個不辭辛勞的清潔工
毫無疑問,.NET框架的核心組件是CLR(公共語言運行時),它在操作系統的頂層,負責管理程序的執行。
五、基礎結構—CLI:一起長大的約定,那樣清晰
過去,各種不同語言的類型特征(例如,組成整數的位數對於不同的語言和平台就有很大差別)不一致,缺乏統一性。為了使不同語言編寫的程序和庫能夠一起有序協作,必須要有一組標准。
CLI就是這樣的一組標准,它把所有.NET框架的組件連接成一個內聚的、一致的系統。它展示了系統的概念和架構,並詳細說明了所有軟件都必須堅持的規則和約定。CLI的組成如下圖所示:
在CLI的眾多組成部分中,最重要的是CTS和CLS。CTS(公共類型系統)定義了那些在托管代碼中一定會使用的類型的特征,而CLS(公共語言規范)詳細說明了一個.NET兼容語言的規則、屬性和行為。
六、本章思維導圖
附件
思維導圖(jpg、pdf與mmap源文件):http://pan.baidu.com/s/1jG5JRpG