?.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:文章乃個人學習筆記,大神勿噴,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/51456.html
標籤:其他
上一篇:動手造輪子:寫一個日志框架
