20世紀90年代以來出現的3種典型的組件技術:
1)OMC(對象組件模型)的CORBA
2)Microsoft的COM/DCOM
3)Sun公司的JavaBeans
在2002年,微軟發布了.NET框架的第一個版本,聲稱其解決了舊問題並實現了下一代系統的目的。.NET框架是一種比MFC和COM編程技術更一致並面向對象的環境。它的特點包括:
1)多平台。【面向異構網絡、硬件平台和操作系統,可以在多種多樣的系統上運行,從服務器、桌面機到PDA和移動電話。】
2)行業標准。【實現軟件系統之間的智能交互和協同工作,使用行業標准的通信協議,比如:XML、HTTP、SOAP和WSDL。】
3)安全性。【提供一個標准化的、安全的、一致的模型和環境,提供更加安全的執行環境,即使有來源可疑的代碼存在。】
Microsoft為.NET技術制定了一整套完整的規范,便是CLI(Common Language Infrastructure,公共語言基礎結構,公共語言架構)。
CLI的組成:
1)CTS(Common Type System,公共類型系統)。【定義了一組豐富的內置類型,以及每種類新固有的、獨有的特性;最重要的特征之一是所有類型都繼承自公共的基類Object類】
2)CLS(Common Language Specification,公共語言規范)。【說明了.NET兼容編程語言的規則、屬性和行為,其主題包括數據類型、類結構和參數傳遞】
3)CIL(Common Intermediate Language,公共中間語言)。
4)CLR(Common Language Runtime,公共語言運行庫)。
5)BCL(Base Class Library,基類庫)。【FCL的一個子集】
6)元數據定義、語義。
7)其他相關標准化文檔、協議、規范。
Microsoft針對CLI在Windows上的完整實現便是 .NET Framework(.NET 框架)。
.NET Framework的主要組成:
1)CLR(Common Language Runtime,公共語言運行時,公共語言運行庫)。【核心組件。提供服務:自動垃圾收集;安全和認證;通過訪問BCL得到廣泛的編程功能,如web服務和數據服務之類的功能】
2)FCL(Framework Class Library,Framework類庫,框架類庫)。【BCL的一個超集】
.NET Framework的優點:
1)面向對象的開發環境。【CLR、BLR和C#被設計得完全面向對象;為本地程序和分布式系統提供一致的、面向對象的編程模型;】
2)自動垃圾收集(Garbage Collection,GC)。【GC自動從內存中刪除程序不在訪問的對象】
4)互操作性。【不同.NET語言編寫的軟件模塊無縫交互;平台調用(platform invoke,P/Incoke)的特性;允許與COM進行交互】
4)不需要COM(Component Object Model,組件對象模型)。
5)簡化的部署。【.NET程序不需要使用注冊表注冊;並行執行特性】
6)類型安全性。【CLR檢查並確保參數及其它數據對的類型安全】
7)基類庫(Base Class Library,基類庫)。有時稱為框架類庫(Framework Class Library,FCL)。【包括通用基礎類、集合類、線程和同步類、XML類】
CLR在運行期管理程序的執行,包括以下內容:
1)內存管理。
2)代碼安全驗證。
3)代碼執行、線程管理和異常處理。
4)垃圾收集。
CLR提供的服務:
1)內存管理。
2)異常處理。
3)自動垃圾收集。
4)管理代碼的執行
5)JIT實時編譯器(Just-in-Time)。
6)類加載器。【通過訪問BCL得到廣泛的編程功能,如web服務和數據服務之類的功能】
7)反射服務。
8)安全服務。
9)提供系統服務。
FCL的組成 或 服務:
1)基礎類型。【整數、實數、字符串等類型定義】
2)數據結構封裝。【集合、鏈表、隊列、堆棧等數據類型】
3)Windows和Web等界面要素。【主要是按鈕、標簽、文本框、菜單等可視化控件】
4)Web Service要素。【用於Web服務的定義、描述、配置、解析等】
5)XML文檔處理。【如XML文件、屬性、元素、節點、讀寫器、解析器等類型】
6)文件的輸入輸出。【如驅動器、目錄、文件、流、讀寫器等類型】
7)數據訪問。【如數據連接、數據命令、數據集、數據表、記錄等類型】
8)網絡通信。【如主機、管道、套接字、消息等類型】
9)異常處理。【用於處理系統和應用程序所引發的各種異常】
9)類型反射。【用於獲取程序集、對象、方法屬性、字段等目標的元數據信息類型】
10)用於應用程序管理、操作系統功能封裝、安全性控制等其他方面的類型。
.NET Framework 環境結構圖:
源代碼文件編譯成CIL的編譯過程:
程序運行時CIL編譯成本機代碼:
.NET 框架編譯和執行:
注:相關名稱一覽:
CLI(Common Language Infrastructure,公共語言基礎結構,公共語言架構)
CTS(Common Type System,公共類型系統)
CLS(Common Language Specification,公共語言規范)
CIL(Common Intermediate Language,公共中間語言)
.NET Framework(.NET 框架)
CLR(Common Language Runtime,公共語言運行庫)
FCL(Framework Class Library,Framework類庫,框架類庫)
BCL(Base Class Library,基類庫)
實時JIT(Just-in-Time)編譯器
GC(Garbage Collection,垃圾收集)
API(Application Programming Interface,應用程序編程接口)注:還特指API的說明文檔,也稱為幫助文檔
MFC(Microsoft foundation classes,微軟基礎類庫)
COM(Component Object Model,組件對象模型)
managed code 托管代碼
unmanaged code 非托管代碼
平台調用(platform invoke,P/Incoke)
Ecma(Europen Computer Manufacturers Association,歐洲計算機制造商協會)