.NET 概念比較龐大,本文只討論基礎知識,只用簡單語言描述。 我們是NET程式員,但是我們有沒有思考過到底什麼是.NET ? 官方定義 .NET是微軟推出來的一個致力於敏捷開發的軟體框架。 大概2000年年左右,微軟推出了.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:文章乃個人學習筆記。大神勿噴。