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

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