C# .NET .NET Framework .NET CORE 等的關係簡介

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 Framework 3.5 2006年11月21日
.NET Framework 4.0 2010年4月12日
.NET Framework 4.5 2012年8月16日
 
最新的版本: .NET Framework 4.7 2017年4月

它提供了建立、部署和運行.NET應用的環境,主要包含三個關鍵的組成元素:異步

  1.    CLR:公共語言運行時(Common Language Runtime)
  2.    FCL:框架類庫(.NET Framework Class Library)
  3.    DLR:動態語言運行時(Dynamic Language Runtime)

 基於.NET框架能夠支持多種語言進行開發,如  C#,VB.NET,C++等,也就是咱們俗稱的跨語言開發

開發和運行一個.NET 應用程序必須安裝.NETFramework。

結構圖:

.NET 框架的用途:
一、提供了一個面向對象的編程環境,徹底支持面向對象編程。
提升了的可複用、可擴展性、可維護性、靈活性
二、對Web Service(WEB服務)的支持
三、實現SOA,支持雲計算(windows Azure)
四、支持構建.NET程序的炫彩UI (WPF)

 ……

 

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),

它是一種比高級語言低,比機器語言要高的中間語言,基於堆棧,又支持面向對象。

全部能被編譯爲IL的語言均可以被.NET Framework託管,其它語言要被.NET Framework託管,則須要第三方編譯器支持。

 

 FCL:框架類庫:

FCL:一個綜合性的面向對象的可重用類型集合
從功能上來看,能夠將FCL框架類庫劃分紅如下幾層。
  • 最底層,由BCL的大部分組成,主要做用是對.NET框架、.NET運行時及CIL語言自己進行支持,例如基元類型、集合類型、線程處理、應用程序域、運行時、安全性、互操做等。
  • 中間層,包含了對操做系統功能的封裝,例如文件系統、網絡鏈接、圖形圖像、XML操做等。
  • 最高層,包含各類類型的應用程序,例如Windows Forms、Asp.NET、WPF、WCF、WF等。

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的版本跌代:

 

.NET Framework 3.0版本是一個分水嶺:
在以前,.NET Framework只提供Asp.net web開發、WinFrom窗體應用程序開發等基本的功能。
在此以後,引入了許多新的特性:
一、WPF:
微軟Vista操做系統的核心開發庫之一,是一個圖形引擎
做用:實現界面顯示與程序代碼更好的分離
 
二、WCF:
把Web服務、.NET Remoting等技術統一到單個面向服務的編程模型中,以實現真正的分佈式計算。
 
三、WF:
WF是一個普遍通用的工做流程框架,從下到上在每一個級別都針對擴展性進行了設計。
 
四、Windows CardSpace:
是微軟公司取代用戶名和密碼成爲驗證網絡使用有者身份的新方法。
 
五、LinQ:
查詢集成語言,簡化不一樣數據源對象查詢操做。
 
六、Ado.net Entity Framework
簡稱EF,是微軟以 ADO.NET 爲基礎所發展出來的對象關係對應 (O/R Mapping) 解決方案( ORM框架),早期被稱爲 ObjectSpace,

該框架在version 6以後從.NET Framework分離出來。

七、Parallel linq

簡稱並行 LINQ (PLINQ) 是 LINQ to Objects 的並行實現。

 PLINQ 將 LINQ 語法的簡潔和可靠性與並行編程的強大功能結合在一塊兒。 就像面向任務並行庫的代碼同樣,PLINQ 查詢會根據主計算機的能力按比例調整併發程度。

在許多狀況下,PLINQ 可經過更有效地使用主計算機上的全部可用內核來顯著提升 LINQ to Objects 查詢的速度。 這一性能提高使桌面具有高性能計算能力。

 

八、Task parallel library

簡稱任務並行庫 (TPL) 是 System.ThreadingSystem.Threading.Tasks 空間中的一組公共類型和 API。

TPL 的目的是經過簡化將並行和併發添加到應用程序的過程來提升開發人員的工做效率。

TPL 動態縮放併發的程度以最有效地使用全部可用的處理器。 此外,TPL 還處理工做分區、ThreadPool 上的線程調度、取消支持、狀態管理以及其餘低級別的細節操做。

經過使用 TPL,你能夠在將精力集中於程序要完成的工做,同時最大程度地提升代碼的性能。

 

九、Modern UI Runtime

簡稱Modern UI,是一個專一於用戶界面設計的框架

 

十、Task-Based Async Model:基於任務的異步模型

 

最新版的.Net Framework 4.7主要帶來了如下方面的提高:

  1. Win10窗體應用帶來了高DPI支持;
  2. 爲Win10上的WPF程序帶來了觸控支持;
  3. 加強了加密支持;
  4. 提高性能和穩定性。

 

 介紹完.NET Framework,再來講說.NET平臺最新發布的.NET Core。

結構圖以下:

相關文章
相關標籤/搜索