到底什么是.NET?


​.NET 概念比較龐大,本文只討論基礎知識,只用簡單語言描述。

我們是NET程序員,但是我們有沒有思考過到底什么是.NET ?

官方定義 .NET是微軟推出來的一個致力於敏捷開發的軟件框架。

 大概2000年年左右,微軟推出了.NET 標准規范,既然有了標准就等於開發時候定義接口一樣,需要東西去實現它。.NET Framework  就是 .NET 的具體實現。

可以這么認為 .NET一種優秀的設計規范和平台標准。

 

下面我們來說說什么是 .NET Framework?

官方定義 .NET Framework  是 Windows 的托管執行環境,可為其運行的應用提供各種服務。

.NET Framework 有兩個主要組件:  

1. .NET 公共語言運行時 (Common Language Runtime,CLR)

CLR核心功能:內存管理,程序集加載,安全性,異常處理,和線程同步,CLR像一個管家一樣,管理着程序代碼的執行,為程序提供一個運行環境。被CLR托管的代碼就叫托管代碼。

       要想了解CLR機制,就要知道我們寫的C#代碼經過VS 編譯之后變成了什么?       

左邊的圖是將我們編寫的C#源代碼編譯成托管模塊,右邊圖是托管模塊的組成部分,這里我們只關注IL代碼,其他的不用關注。C#代碼經過編譯器生成的並不是最終的CUP指令,而是一個中間語言IL代碼,也就是托管代碼,CLR操作的就是IL代碼,最終由CLR將IL編譯成計算機可以認識的Cpu指令。我們應該知道程序運行時候需要占用計算機的內存,C++時代的的程序員是需要自己手動操作管理內存的,需要自己分配和釋放內存。但是我們.NET程序員是不需要進行這個操作的。這是因為CLR幫我們自動做分配內存和釋放內存的這個操作了。這個操作對於NET開發者來說是透明的,這就是文章的前面所說CLR的主要功能內存管理。由CLR管理釋放的內存空間叫做托管堆。在托管堆上的代碼稱之為安全代碼也叫托管代碼,反之不在托管堆上的代碼就叫非托管代碼,非托管代碼有可能造成內存泄漏。

CLR是很復雜的一個東西。本文不做過多的討論,只是對其概念進行簡單的講解。

2.  Framework 類庫 

.NET Framework類庫應該比較好理解,類似我們自己封裝工具類一樣的概念。Framework 類庫 (Framework Class Library) 簡稱 FCL,FCL 里面定義了數千個類型供我們用。利用這些類型我們可以開發各種類型的應用程序 webService,MVC,Windows Forms ,WPF,Windows 服務等。所以要想學好.NET的,雖然不需要你都掌握整個.NET類庫。這也不現實,但是也要盡可能掌握常用的類型。

總結

.NET Framework是.NET平台標准的主要的實現,實現的不僅僅有.NET Framework還有.NET Core和mono。

.NET Framework包含CLR和 FCL。

CLR為.NET程序提供一個運行環境並對其進行托管。

FCL Framework類庫為.NET程序員提供了大量豐富的基礎類型供其使用。封裝了一些基礎的操作,為了.NET程序員的開發提供了便利。

 ps:文章乃個人學習筆記。大神勿噴。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM