20世紀90年代以來出現的3種典型的組件技術:web
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,歐洲計算機制造商協會)