.NET Framework 4.0
.NET Framework 3.5
.NET Framework 3.0
.NET Framework 2.0
.NET Framework 1.1
.NET Framework 1.0
最新版:.NET Framework 4.5
NET框架(.NET Framework) 是由微軟開發(fā),一個(gè)致力于敏捷軟件開發(fā)(Agile software development)、快速應(yīng)用開發(fā)(Rapid application development)、平臺(tái)無關(guān)性和網(wǎng)絡(luò)透明化的軟件開發(fā)平臺(tái)。.NET是微軟為下一個(gè)十年對(duì)服務(wù)器和桌面型軟件工程邁出的第一步。NET 包含許多有助于互聯(lián)網(wǎng)和內(nèi)部網(wǎng)應(yīng)用迅捷開發(fā)的技術(shù)?!?br>
.NET Framework 是支持生成和運(yùn)行下一代
應(yīng)用程序和
XML Web services 的內(nèi)部 Windows 組件。.NET Framework 旨在實(shí)現(xiàn)下列目標(biāo):
·提供一個(gè)一致的面向?qū)ο蟮木幊汰h(huán)境,而無論對(duì)象代碼是在本地存儲(chǔ)和執(zhí)行,還是在本地執(zhí)行但在 Internet 上分布,或者是在遠(yuǎn)程執(zhí)行的。
·提供一個(gè)將軟件部署和版本控制沖突最小化的代碼執(zhí)行環(huán)境。
·提供一個(gè)可提高代碼(包括由未知的或不完全受信任的第三方創(chuàng)建的代碼)執(zhí)行安全性的代碼執(zhí)行環(huán)境。
·提供一個(gè)可消除腳本環(huán)境或解釋環(huán)境的性能問題的代碼執(zhí)行環(huán)境。
·使開發(fā)人員的經(jīng)驗(yàn)在面對(duì)類型大不相同的應(yīng)用
程序(如基于 Windows 的應(yīng)用
程序和基于 Web 的應(yīng)用
程序)時(shí)保持一致。
·按照工業(yè)標(biāo)準(zhǔn)生成所有通信,以確保基于 .NET Framework 的代碼可與任何其他代碼集成。
.NET Framework 具有兩個(gè)主要組件:
公共語言運(yùn)行庫和
.NET Framework 類庫。
公共語言運(yùn)行庫是 .NET Framework 的基礎(chǔ)。您可以將公共語言運(yùn)行庫看作一個(gè)在執(zhí)行時(shí)管理代碼的代理,它提供內(nèi)存管理、線程管理和遠(yuǎn)程處理等核心服務(wù),并且還強(qiáng)制實(shí)施嚴(yán)格的類型安全以及可提高安全性和可靠性的其他形式的代碼準(zhǔn)確性。這類似于Java的虛擬機(jī)。事實(shí)上,代碼管理的概念是公共語言運(yùn)行庫的基本原則。以公共語言運(yùn)行庫為目標(biāo)的代碼稱為托管代碼,而不以公共語言運(yùn)行庫為目標(biāo)的代碼稱為非托管代碼。
.NET Framework 的另一個(gè)主要組件是類庫,它是一個(gè)綜合性的面向?qū)ο蟮目芍赜妙愋图?,您可以使用它開發(fā)多種應(yīng)用
程序,這些應(yīng)用
程序包括傳統(tǒng)的命令行或圖形用戶界面 (GUI) 應(yīng)用
程序,也包括基于 ASP.NET 所提供的最新創(chuàng)新的應(yīng)用
程序(如 Web 窗體和 XML Web services)。
.NET Framework 可由非托管組件承載,這些組件將公共語言運(yùn)行庫加載到它們的進(jìn)程中并啟動(dòng)托管代碼的執(zhí)行,從而創(chuàng)建一個(gè)可以同時(shí)利用托管和非托管功能的軟件環(huán)境。.NET Framework 不但提供若干個(gè)運(yùn)行庫宿主,而且還支持第三方運(yùn)行庫宿主的開發(fā)。
例如,ASP.NET 承載運(yùn)行庫以為托管代碼提供可伸縮的服務(wù)器端環(huán)境。ASP.NET
.NET Framework 環(huán)境
直接使用運(yùn)行庫以啟用 ASP.NET 應(yīng)用
程序和 XML Web Services(本主題稍后將對(duì)這兩者進(jìn)行討論)。
Internet Explorer 是承載運(yùn)行庫(以 MIME 類型擴(kuò)展的形式)的非托管應(yīng)用
程序的一個(gè)示例。使用 Internet Explorer 承載運(yùn)行庫使您能夠在 HTML 文檔中嵌入托管組件或 Windows 窗體控件。以這種方式承載運(yùn)行庫使得托管移動(dòng)代碼(類似于 Microsoft® ActiveX® 控件)成為可能,不過它需要進(jìn)行重大改進(jìn)(如不完全受信任的執(zhí)行和獨(dú)立的文件存儲(chǔ)),而這種改進(jìn)只有托管代碼才能提供。
右面的插圖顯示公共語言運(yùn)行庫和類庫與應(yīng)用
程序之間以及與整個(gè)系統(tǒng)之間的關(guān)系。該插圖還顯示托管代碼如何在更大的結(jié)構(gòu)內(nèi)運(yùn)行。
.NET Framework 類庫 .NET Framework 類庫是一個(gè)與公共語言運(yùn)行庫緊密集成的可重用的類型集合。該類庫是面向?qū)ο蟮模⑻峁┠约旱耐泄艽a可從中導(dǎo)出功能的類型。這不但使 .NET Framework 類型易于使用,而且還減少了學(xué)習(xí) .NET Framework 的新功能所需要的時(shí)間。此外,第三方組件可與 .NET Framework 中的類無縫集成。
例如,.NET Framework 集合類實(shí)現(xiàn)一組可用于開發(fā)您自己的集合類的接口。您的集合類將與 .NET Framework 中的類無縫地混合。
正如您對(duì)面向?qū)ο蟮念悗焖M哪菢樱?NET Framework 類型使您能夠完成一系列常見編程任務(wù)(包括諸如字符串管理、數(shù)據(jù)收集、數(shù)據(jù)庫連接以及文件訪問等任務(wù))。除這些常見任務(wù)之外,類庫還包括支持多種專用開發(fā)方案的類型。例如,可使用 .NET Framework 開發(fā)下列類型的應(yīng)用
程序和服務(wù):
控制臺(tái)應(yīng)用
程序。
Windows GUI 應(yīng)用
程序(Windows 窗體)。
Windows Presentation Foundation (WPF) 應(yīng)用
程序。
ASP.NET 應(yīng)用
程序。
Web 服務(wù)。
Windows 服務(wù)。
使用 Windows Communication Foundation (WCF) 的面向服務(wù)的應(yīng)用
程序。
使用 Windows Workflow Foundation (WF) 的啟用工作流程的應(yīng)用
程序。
例如,Windows 窗體類是一組綜合性的可重用的類型,它們大大簡化了 Windows GUI 的開發(fā)。如果要編寫 ASP.NET Web 窗體應(yīng)用
程序,可使用 Web 窗體類。
公共語言運(yùn)行庫的功能 公共語言運(yùn)行庫管理內(nèi)存、線程執(zhí)行、代碼執(zhí)行、代碼安全驗(yàn)證、編譯以及其他系統(tǒng)服務(wù)。這些功能是在公共語言運(yùn)行庫上運(yùn)行的托管代碼所固有的。
至于安全性,取決于包括托管組件的來源(如 Internet、企業(yè)網(wǎng)絡(luò)或本地計(jì)算機(jī))在內(nèi)的一些因素,托管組件被賦予不同程度的信任。這意味著即使用在同一活動(dòng)應(yīng)用
程序中,托管組件既可能能夠執(zhí)行文件訪問操作、注冊表訪問操作或其他須小心使用的功能,也可能不能夠執(zhí)行這些功能。
運(yùn)行庫強(qiáng)制實(shí)施代碼訪問安全。例如,用戶可以相信嵌入在網(wǎng)頁中的可執(zhí)行文件能夠在屏幕上播放動(dòng)畫或唱歌,但不能訪問他們的個(gè)人數(shù)據(jù)、文件系統(tǒng)或網(wǎng)絡(luò)。這樣,運(yùn)行庫的安全性功能就使通過 Internet 部署的合法軟件能夠具有特別豐富的功能。
運(yùn)行庫還通過實(shí)現(xiàn)稱為通用類型系統(tǒng) (CTS) 的嚴(yán)格類型驗(yàn)證和代碼驗(yàn)證基礎(chǔ)結(jié)構(gòu)來加強(qiáng)代碼可靠性。CTS 確保所有托管代碼都是可以自我描述的。各種 Microsoft 和第三方語言編譯器生成符合 CTS 的托管代碼。這意味著托管代碼可在嚴(yán)格實(shí)施類型保真和類型安全的同時(shí)使用其他托管類型和實(shí)例。
此外,運(yùn)行庫的托管環(huán)境還消除了許多常見的軟件問題。例如,運(yùn)行庫自動(dòng)處理對(duì)象布局并管理對(duì)對(duì)象的引用,在不再使用它們時(shí)將它們釋放。這種自動(dòng)內(nèi)存管理解決了兩個(gè)最常見的應(yīng)用
程序錯(cuò)誤:內(nèi)存泄漏和無效內(nèi)存引用。
運(yùn)行庫還提高了開發(fā)人員的工作效率。例如,
程序員可以用他們選擇的開發(fā)語言編寫應(yīng)用
程序,卻仍能充分利用其他開發(fā)人員用其他語言編寫的運(yùn)行庫、類庫和組件。任何選擇以運(yùn)行庫為目標(biāo)的編譯器供應(yīng)商都可以這樣做。以 .NET Framework 為目標(biāo)的語言編譯器使得用該語言編寫的現(xiàn)有代碼可以使用 .NET Framework 的功能,這大大減輕了現(xiàn)有應(yīng)用
程序的遷移過程的工作負(fù)擔(dān)。
盡管運(yùn)行庫是為未來的軟件設(shè)計(jì)的,但是它也支持現(xiàn)在和以前的軟件。托管和非托管代碼之間的互操作性使開發(fā)人員能夠繼續(xù)使用所需的 COM 組件和 DLL。
運(yùn)行庫旨在增強(qiáng)性能。盡管公共語言運(yùn)行庫提供許多標(biāo)準(zhǔn)運(yùn)行庫服務(wù),但是它從不解釋托管代碼。一種稱為實(shí)時(shí) (JIT) 編譯的功能使所有托管代碼能夠以它在其上執(zhí)行的系統(tǒng)的本機(jī)語言運(yùn)行。同時(shí),內(nèi)存管理器排除了出現(xiàn)零碎內(nèi)存的可能性,并增大了內(nèi)存引用區(qū)域以進(jìn)一步提高性能。
最后,運(yùn)行庫可由高性能的服務(wù)器端應(yīng)用
程序(如 Microsoft® SQL Server&S482; 和 Internet 信息服務(wù) (IIS))承載。此基礎(chǔ)結(jié)構(gòu)使您在享受支持運(yùn)行庫宿主的行業(yè)最佳企業(yè)服務(wù)器的優(yōu)越性能的同時(shí),能夠使用托管代碼編寫業(yè)務(wù)邏輯。
客戶端應(yīng)用程序開發(fā) 客戶端應(yīng)用
程序在基于 Windows 的編程中最接近于傳統(tǒng)風(fēng)格的應(yīng)用
程序。這些是在桌面上顯示窗口或窗體從而使用戶能夠執(zhí)行任務(wù)的應(yīng)用
程序類型。客戶端應(yīng)用
程序包括諸如字處理
程序和電子表格等應(yīng)用
程序,還包括自定義的業(yè)務(wù)應(yīng)用
程序(如數(shù)據(jù)輸入工具、報(bào)告工具等等)??蛻舳藨?yīng)用
程序通常使用窗口、菜單、按鈕和其他 GUI 元素,并且它們可能訪問本地資源(如文件系統(tǒng))和外圍設(shè)備(如打印機(jī))。
另一種客戶端應(yīng)用
程序是作為網(wǎng)頁通過 Internet 部署的傳統(tǒng) ActiveX 控件(現(xiàn)在被托管 Windows 窗體控件所替代)。此應(yīng)用
程序非常類似于其他客戶端應(yīng)用
程序:它在本機(jī)執(zhí)行,可以訪問本地資源,并包含圖形元素。
過去,開發(fā)人員結(jié)合使用 C/C++ 與 Microsoft 基礎(chǔ)類 (MFC) 或應(yīng)用
程序快速開發(fā) (RAD) 環(huán)境(如 Microsoft; Visual Basic;)來創(chuàng)建此類應(yīng)用
程序。.NET Framework 將這些現(xiàn)有產(chǎn)品的特點(diǎn)合并到了單個(gè)且一致的開發(fā)環(huán)境中,該環(huán)境大大簡化了客戶端應(yīng)用
程序的開發(fā)。
包含在 .NET Framework 中的 Windows 窗體類旨在用于 GUI 開發(fā)。您可以輕松創(chuàng)建具有適應(yīng)多變的商業(yè)需求所需的靈活性的命令窗口、按鈕、菜單、工具欄和其他屏幕元素。
例如,.NET Framework 提供簡單的屬性以調(diào)整與窗體相關(guān)聯(lián)的可視屬性。某些情況下,基礎(chǔ)操作系統(tǒng)不支持直接更改這些屬性,而在這些情況下,.NET Framework 將自動(dòng)重新創(chuàng)建窗體。這是 .NET Framework 集成開發(fā)人員接口從而使編碼更簡單更一致的許多方法之一。
和 ActiveX 控件不同,Windows 窗體控件具有對(duì)用戶計(jì)算機(jī)的不完全受信任的訪問權(quán)限。這意味著二進(jìn)制代碼或在本機(jī)執(zhí)行的代碼可訪問用戶系統(tǒng)上的某些資源,例如 GUI 元素和訪問受限制的文件,但這些代碼不能訪問或危害其他資源。由于具有代碼訪問安全性,許多曾經(jīng)需要安裝在用戶系統(tǒng)上的應(yīng)用
程序現(xiàn)在可以通過 Web 部署。您的應(yīng)用
程序可以在像網(wǎng)頁那樣部署時(shí)實(shí)現(xiàn)本地應(yīng)用
程序的功能。
服務(wù)器應(yīng)用
程序開發(fā) 在托管領(lǐng)域中,服務(wù)器端應(yīng)用
程序是通過運(yùn)行庫宿主實(shí)現(xiàn)的。非托管應(yīng)用
程序承載公共語言運(yùn)行庫,后者使您的自定義托管代碼可以控制服務(wù)器的行為。此模型在獲得主服務(wù)器的性能和可伸縮性的同時(shí)提供給您公共語言運(yùn)行庫和類庫的所有功能。