.NET Framework的作用是什么
.net framework是微軟的開發(fā)程序的框架 .net技術(shù)是比較新的技術(shù) 用.net開發(fā)的程序就需要.net的環(huán)境來支持才能運行 打個比方linux的應用程序只能在linux的環(huán)境下才能使用
NET的運行環(huán)境,類似用運行時間庫的東西,要運行.NET的計算機必須安裝了這個東西。具體的說是支持生成和運行下一代應用程序和 XML Web services 的內(nèi)部 Windows 組件

NET Framework: 就是微軟Web Services 引擎
基本上安裝了之后對機器不會有很大的影響
NET Framework 旨在實現(xiàn)下列目標:
提供一個一致的面向?qū)ο蟮木幊汰h(huán)境,而無論對象代碼是在本地存儲和執(zhí)行,還是在本地執(zhí)行但在 Internet 上分布,或者是在遠程執(zhí)行的。
提供一個將軟件部署和版本控制沖突最小化的代碼執(zhí)行環(huán)境。
提供一個可提高代碼(包括由未知的或不完全受信任的第三方創(chuàng)建的代碼)執(zhí)行安全性的代碼執(zhí)行環(huán)境。
提供一個可消除腳本環(huán)境或解釋環(huán)境的性能問題的代碼執(zhí)行環(huán)境。
使開發(fā)人員的經(jīng)驗在面對類型大不相同的應用程序(如基于 Windows 的應用程序和基于 Web 的應用程序)時保持一致。
.NET Framework是Microsoft為開發(fā)應用程序而創(chuàng)建的一個具有革命意義的平臺。
跨平臺的
沒有限制應用程序的類型:可以使用.NET Framework創(chuàng)建桌面應用程序、Windows Store應用程序、云/Web應用程序、Web API和其它各種類型的應用程序。
可用于各種語言:C# C++ Visual Basic Jscript等
.NET Framework的內(nèi)容
編譯應用程序時,所創(chuàng)建的CIL代碼存儲在一個程序集中。
程序集 = 可執(zhí)行的應用程序文件 + 其它應用程序使用的庫
(擴展名.exe 可直接在windows上運行) (擴展名.dll)
除了CIL外,程序集還包含元信息,和可選的資源(CIL使用的其它數(shù)據(jù),如聲音文件圖片等)
元信息:程序集中包含的數(shù)據(jù)的信息,也稱為元數(shù)據(jù)
全局程序集緩存 Global Assembly Cache ,GAC
通用中間語言 Common Intermediate Language , CIL
Just-In-Time JIT
CTS 公共類型系統(tǒng)
CLR 公共語言運行庫
在將代碼編譯為CIL后,再用JIT編譯器將它編譯為本機代碼,然后還需要管理正在執(zhí)行的代碼(runtime)
在C#中,只能編寫在托管環(huán)境下運行的代碼。我們使用CLR的托管功能,讓.NET處理與操作系統(tǒng)的任何交互。
CLR管理著應用程序,其方式是管理內(nèi)存、處理安全性以及允許進行跨語言調(diào)試等。
代碼托管最重要的一個功能是垃圾回收
.NET垃圾回收會定期檢查計算機內(nèi)存,從中刪除不在需要的內(nèi)容。執(zhí)行垃圾回收的時間并不固定。
創(chuàng)建.NET應用程序的步驟:
使用某種.NET兼容語言編寫那些應用程序
把代碼編譯為CIL,存儲在程序集中
在執(zhí)行代碼時(如果是一個可執(zhí)行文件,就自動運行,或是在其它代碼使用它時運行),首先必須使用JIT編譯器將代碼編譯為本機代碼。
在托管的CLR環(huán)境下運行本機代碼,以及其它應用程序或進程
.NET Framework的個人理解
學習C#的時候感覺目前很重要一個問題就是弄明白.NET Framework到底是什么。雖然C#不局限于.NET,但是我接觸到的情況下貌似確實沒有別的平臺用C#語言了,而且感覺學了好久C#回頭才發(fā)現(xiàn).NET到底是什么還不是很清晰,所以現(xiàn)在我先查些資料,也許之后還要有新的補充和改正。
首先,.NET是微軟的托管代碼模型,所謂的托管代碼(IL)其實和JAVA的虛擬機很類似的,微軟搞個了概念游戲,說C#是編譯語言而不是解釋語言,其實C#的編譯跟C++的編譯不是一回事,仔細看看,將C#語言“編譯”成中間代碼(IL)不就是JAVA解釋成JAVA虛擬機運行語言么?當然這里細節(jié)問題本人還不是很清楚不敢隨便下斷言,但是有個概念要清楚的是,.NET會為其語言(C#,VB.NET,J#。。。,貌似MFC也會用)提供了運行環(huán)境,而不僅僅是功能函數(shù)庫,也就是說可以把.NET看成一個類似的虛擬機,C#語言對系統(tǒng)資源的操作使用是通過.NET完成的,所以也好理解為什么.NET程序很少直接調(diào)用WIN API了。
其次,.NET Framework完成了資源回收功能(GC),其實這個問題主要是解放了我們寫程序?qū)Y源使用的管理上的精力,而且在新手時期確實自動的資源回收要比自己來的穩(wěn)定且效率高,所以C++程序比C# 、JAVA程序效率高那是需要編程者的水平的,沒那個水平還是先老老實實從基礎學起的好,可能因為我本身就是外專業(yè)轉(zhuǎn)過來的吧,所以對基礎理論的重要性也許比我身邊的人感覺更多點- -!不過不是C#自己手動釋放資源沒有意義,至少數(shù)據(jù)流、數(shù)據(jù)庫連接什么的要自己關(guān)吧(.NET釋放這些接口有延時的)。而且用到C#的指針(確實有指針的)那就跟C++很接近了。
再者,提到指針就不得不提到安全代碼問題,代碼的安全性我目前了解的不多(項目經(jīng)驗少啊),但是一個是代碼內(nèi)存的適當釋放、規(guī)范、防止泄露是其中要考慮的一些問題,我目前覺得C#編程中對應的考慮也就是作用域、類(尤其是.NET或者第三方庫中)的安全調(diào)用(又是經(jīng)驗!!!)、類型轉(zhuǎn)換等,不過只是考慮這些也比C++要考慮的少好多了。
目前我的總結(jié)也就到這里了,因為目前的學習進度,還沒提到XML、Web這些.NET曾經(jīng)的主要特色(現(xiàn)在都普及了)
反正很多軟件都基于,.NET Framework開發(fā)完成,那么就需要安裝支持了。
|