引言
本文著眼于微軟.NET框架。這是較新發(fā)布的軟件開發(fā)環(huán)境,它幫助開發(fā)者快速開發(fā)應用程序并且提供各種不同語言像Visual Basic .NET, C#, ASP .NET, 和Jscript .NET等開發(fā)最合適的,高效的,可擴展的,面向性能的應用程序 。
.NET框架概述
.NET框架是一種新的計算平臺,它在Internet高度分布的環(huán)境中簡化應用程序開發(fā)
服務
NET框架提供以下服務:
.NET框架將使開發(fā)者為不同設備和不同平臺開發(fā)應用程序,如:windows應用程序、web應用程序、windows服務和web服務。
目標
設計.NET框架是為了實現(xiàn)下列目標:
理解.NET框架體系結構
.NET框架有兩個組件:.NET框架類庫和公共語言運行時。
.NET框架類庫使類型(CTS)變的簡單,它對于.NET語言來說是公共的。
公共語言運行時組成部分有由:(類加載器)加載程序的IL代碼并將起編譯成本地代碼到運行時,執(zhí)行和管理代碼來加強安全和類型安全,并且提供線程支持。
.NET框架體系結構最頂部是像VB .NET C#, VJ#, VC++ .NET之類的語言;開發(fā)者能開發(fā)(使用上面的任何語言)像Windows窗體,Web窗體,Windows服務和XML Web服務。 .NET框架有兩個組要的組件:公共語言運行時(CLR)和.NET框架類庫。公共語言運行時是.NET框架的基礎。CLR 在運行時管理代碼,提供像內存管理,線程管理和remoting之類的核心服務,同時也加強嚴格的類型安全和促進代碼正確來確保程序的安全性和健壯性(魯棒性)。代碼管理的概念是CLR的基本原則。針對CLR的代碼被認為是可管理的代碼,而不是針對CLR的代碼則被認為是不可管理的代碼。 類庫是.NET框架的一個完整的組件, 包括可重用類的面向對象集合,它使我們能用來開發(fā)應用程序包括傳統(tǒng)的命令行或是任何像Windows窗體,ASP. NET Web窗體和新近發(fā)明的XML Web 服務的Windows服務這樣的圖形用戶接口(GUI)。 歐洲計算機制造商協(xié)會(ECMA)標準定義了通用語言規(guī)范(CLS);這加強了軟件開發(fā)語言能夠進行互操作。按照CLS編寫的代碼應該能和另一個符合CLS語言的代碼一起編譯。因為由符合CLS語言支持的代碼將會被編譯成中間語言(IL)代碼。CLR引擎執(zhí)行IL代碼。這保證了符合CLS語言的互用性。微軟.NET框架支持的語言有Microsoft Visual Basic .NET, Microsoft Visual C#, Microsoft Visual C++ .NET, and Microsoft Visual J# .NET. 語言編譯器生成中間語言代碼,叫做微軟中間語言(MSIL),它使不同可互操作的.NET語言編寫程序。
理解.NET框架的角色
ECMA標準,公共語言架構(CLI),定義了IL代碼需要執(zhí)行的基礎架構的規(guī)范。CLI提供一個公共類型系統(tǒng)(CTS)和像類型安全,可管理的代碼執(zhí)行和side by side執(zhí)行的服務。
圖1.微軟.NET框架的ECMA標準
.NET框架提供基礎架構和服務。CLI規(guī)范.它們包括:
公共語言運行時:
CLR包括CLI
CLR也提供.NET應用程序的執(zhí)行環(huán)境
公共類型系統(tǒng):
提供數(shù)據(jù)類型,值,對象類型。這使得開發(fā)人員能用不同的語言開發(fā)應用程序。.NET語言共享CTS意味著所有在應用程序中的類型在CLI類型定義中是一樣的。
類型安全:
.NET框架在值和對象上執(zhí)行操作,因為.NET框架需要知道每個值和對象的類型并且引用值和對象類型。
可管理的代碼執(zhí)行
.NET框架管理執(zhí)行.NET應用程序時對象的狀態(tài)。
.NET框架自動分配內存并提供來機收集機制來重新分配內存
Side-by-side執(zhí)行
.NET框架通過使用不同版本的裝配器允許同一應用程序的不同版本運行在同一機器上。裝配器由IL代碼和元數(shù)據(jù)組成。元數(shù)據(jù)決定應用程序的依賴關系。通過這個,.NET框架運行時能執(zhí)行多種版本裝配器并且解決遺留的開發(fā)環(huán)境的主要問題。那就是DLL HELL?
.NET裝配器
圖2 Side-by-side執(zhí)行
圖1.微軟.NET框架的ECMA標準
.NET框架提供基礎架構和服務。CLI規(guī)范.它們包括:
公共語言運行時:
CLR包括CLI
CLR也提供.NET應用程序的執(zhí)行環(huán)境
公共類型系統(tǒng):
提供數(shù)據(jù)類型,值,對象類型。這使得開發(fā)人員能用不同的語言開發(fā)應用程序。.NET語言共享CTS意味著所有在應用程序中的類型在CLI類型定義中是一樣的。
類型安全:
.NET框架在值和對象上執(zhí)行操作,因為.NET框架需要知道每個值和對象的類型并且引用值和對象類型。
可管理的代碼執(zhí)行
.NET框架管理執(zhí)行.NET應用程序時對象的狀態(tài)。
.NET框架自動分配內存并提供來機收集機制來重新分配內存
Side-by-side執(zhí)行
.NET框架通過使用不同版本的裝配器允許同一應用程序的不同版本運行在同一機器上。裝配器由IL代碼和元數(shù)據(jù)組成。元數(shù)據(jù)決定應用程序的依賴關系。通過這個,.NET框架運行時能執(zhí)行多種版本裝配器并且解決遺留的開發(fā)環(huán)境的主要問題。那就是DLL HELL?
.NET裝配器
圖2 Side-by-side執(zhí)行
理解.NET框架CLR
公共語言運行時:
理解.NET框架CLR的體系結構
公共語言運行時的特征 CLR有以下特征: 理解CLR 為了執(zhí)行程序并且獲得可管理執(zhí)行環(huán)境的所以好處,我們用CLS支持的.NET框架語言編寫代碼。語言編譯器將源代碼編譯成由CPU相關的代碼和平臺相關的指令組成的MSIL代碼。MSIL有下列組成: MSIL代碼能夠在執(zhí)行前被編譯成特定CPU指令,CLR所需要代碼的信息只有元數(shù)據(jù)。元數(shù)據(jù)描述代碼并且定義代碼類型包括引用代碼在運行期用到的其他類型。 CLR的特點 CLR的結構
CLR的特點
CLR的結構
為了執(zhí)行程序并且獲得可管理執(zhí)行環(huán)境的所以好處,我們用CLS支持的.NET框架語言編寫代碼。語言編譯器將源代碼編譯成由CPU相關的代碼和平臺相關的指令組成的MSIL代碼。MSIL有下列組成:
MSIL代碼能夠在執(zhí)行前被編譯成特定CPU指令,CLR所需要代碼的信息只有元數(shù)據(jù)。元數(shù)據(jù)描述代碼并且定義代碼類型包括引用代碼在運行期用到的其他類型。 CLR的特點 CLR的結構
CLR的特點
CLR的結構
CLR有以下特征:
理解CLR 為了執(zhí)行程序并且獲得可管理執(zhí)行環(huán)境的所以好處,我們用CLS支持的.NET框架語言編寫代碼。語言編譯器將源代碼編譯成由CPU相關的代碼和平臺相關的指令組成的MSIL代碼。MSIL有下列組成: MSIL代碼能夠在執(zhí)行前被編譯成特定CPU指令,CLR所需要代碼的信息只有元數(shù)據(jù)。元數(shù)據(jù)描述代碼并且定義代碼類型包括引用代碼在運行期用到的其他類型。 CLR的特點 CLR的結構
CLR的特點
CLR的結構
為了執(zhí)行程序并且獲得可管理執(zhí)行環(huán)境的所以好處,我們用CLS支持的.NET框架語言編寫代碼。語言編譯器將源代碼編譯成由CPU相關的代碼和平臺相關的指令組成的MSIL代碼。MSIL有下列組成:
MSIL代碼能夠在執(zhí)行前被編譯成特定CPU指令,CLR所需要代碼的信息只有元數(shù)據(jù)。元數(shù)據(jù)描述代碼并且定義代碼類型包括引用代碼在運行期用到的其他類型。 CLR的特點 CLR的結構
CLR的特點
CLR的結構