2019新的一年,祝你們新年快樂,工做生活一路順風,心想事成!諸事大吉!web
這篇文章是我今年的第一篇博客,主題是:C# .NET .NET Framework .NET CORE 等這些名詞之間有什麼關聯關係。編程
費話很少說,直接進入主題。windows
.NET的正式誕生:2002年2月13日微軟正式推出.NET的開發工具--Visual Studio.NET 2002。api
.NET平臺結構圖:安全
咱們看上圖,咱們一一來作解釋:網絡
硬件設備和操做系統我就不作解釋了,這是軟件運行的載體或環境,計算機行業的基礎。併發
.NET Framework(如下簡稱.NET 框架):app
.NET Framework是安裝和運行在操做系統上的,是.NET最基礎的框架,開發.NET應用程序的核心基礎。框架
它提供了建立、部署和運行.NET應用的環境,主要包含三個關鍵的組成元素:異步
基於.NET框架能夠支持多種語言進行開發,如 C#,VB.NET,C++等,也就是咱們俗稱的跨語言開發
開發和運行一個.NET 應用程序必須安裝.NETFramework。
結構圖:
……
CLR:公共語言運行時
CLR是.NET框架的基礎,它提供了全部.NET應用程序運行時環境,是全部.NET應用程序都要使用的編程基礎。
CLR也能夠看做是一個在執行時管理代碼的代理,管理代碼是CLR的基本功能,可以被託管的代碼稱爲託管代碼,
反之稱爲非託管代碼。託管代碼以「CLR」爲目標,非託管代碼以「操做系統」爲目標
CLR包含三個組成部分:
CLS:公共語言規範(Common Language Specifcation):
是一種最低的語言標準,它制定了一種以.NET平臺爲目標的語言所必須支持的最小特徵,以及該語言與其它.NET語言之間實現互操做所須要的完整特性。
凡是遵照這個標準的語言在.NET框架下均可以實現互相調用。簡單說:就是把各類語言轉換成統一的語法規範。
CTS:通用類型系統(Common Type System)
解決不一樣語言數據類型不一樣的問題,如C#中的整形是int,而VB.net中的整形是Integer,經過CTS咱們把它們兩個編譯成通用的類型Int32。
全部的.NET語言共享這一類型系統,在它們之間實現對接,簡單說:就是把各類語言中的不一樣數據類型,轉換成統一的通用的數據類型。
JIT:即時編譯器(Just In Time)
將用於轉換以後的微軟中間語言編譯爲二進制語言,交給CPU執行
CLR的編譯過程:
.NET全部編寫的源代碼都不被編譯成本地代碼,而是由各自語言的編譯器,編譯成微軟的中間代碼(Microsoft Intermediate Language,MSIL).
中間語言MSIL或IL,再由JIT編譯器轉換成機器代碼(操做系統專用代碼)
注:
IL咱們一般稱之爲程序集語言,由於.NET程序集須要由.NET運行時加載才能運行,因此IL代碼也叫作託管代碼(Managed Code),
它是一種比高級語言低,比機器語言要高的中間語言,基於堆棧,又支持面向對象。
FCL:框架類庫:
FCL的內容被組織成一個樹狀的命名空間(Namespace Tree),每一個命名空間能夠包含許多類型及其它命名空間,
在使用FCL時,咱們須要引入其相應的命名空間。
核心命名空間簡介:
System:此命名空間包含全部其餘的命名空用,在 System命名空間中包含了定義NET中使用的公共數據類美型,如 Boolean,
DateTime和lnt 32等。此命名空間中還有一個很是重要的數據類型" Object", Object類是全部其餘NET對象繼承的基本類
System Collections. Generic:支持泛型操做,是.NET 2.0新增的內容.
System IO:支持對文件的操做、如複製,粘貼、刪除及對文件的讀寫等
System.Net:支持對網絡協議的編程
System.Dat提供對錶示 ADO. NET結構的類的訪問
System.Windows. Fonns:用於開發 Windows應用程序,引入這個命名空間才能使用 Win forms的控件和各類特性。
System.Drawing:支持GDI+基本圖形操做
DLR:動態語言運行時
在NET Framework 4.0中新增了動態語言運行時DLR(Dynamic Language Runtime),相對於CLR微軟提供了DLR
用來向CLR中添加了一組專門用於知足動態語言的服務, 藉助於DLR,能夠開發在.NET Framework 上運行的動態語言,
並且可使用C#,VB.NET等語言方便地與動態語言交互,目前比較出名的DLR應用有IronPython。
.NET Framework的版本跌代:
該框架在version 6以後從.NET Framework分離出來。
七、Parallel linq
簡稱並行 LINQ (PLINQ) 是 LINQ to Objects 的並行實現。
PLINQ 將 LINQ 語法的簡潔和可靠性與並行編程的強大功能結合在一塊兒。 就像面向任務並行庫的代碼同樣,PLINQ 查詢會根據主計算機的能力按比例調整併發程度。
在許多狀況下,PLINQ 可經過更有效地使用主計算機上的全部可用內核來顯著提升 LINQ to Objects 查詢的速度。 這一性能提高使桌面具有高性能計算能力。
八、Task parallel library
簡稱任務並行庫 (TPL) 是 System.Threading 和 System.Threading.Tasks 空間中的一組公共類型和 API。
TPL 的目的是經過簡化將並行和併發添加到應用程序的過程來提升開發人員的工做效率。
TPL 動態縮放併發的程度以最有效地使用全部可用的處理器。 此外,TPL 還處理工做分區、ThreadPool 上的線程調度、取消支持、狀態管理以及其餘低級別的細節操做。
經過使用 TPL,你能夠在將精力集中於程序要完成的工做,同時最大程度地提升代碼的性能。
九、Modern UI Runtime
簡稱Modern UI,是一個專一於用戶界面設計的框架
十、Task-Based Async Model:基於任務的異步模型
最新版的.Net Framework 4.7主要帶來了如下方面的提高:
介紹完.NET Framework,再來講說.NET平臺最新發布的.NET Core。
結構圖以下: