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


2019新的一年,祝大家新年快樂,工作生活一帆風順,心想事成!諸事大吉!

這篇文章是我今年的第一篇博客,主題是:C#  .NET  .NET Framework   .NET CORE  等這些名詞之間有什么關聯關系。

費話不多說,直接進入主題。

 

.NET的正式誕生:2002年2月13日微軟正式推出.NET的開發工具--Visual Studio.NET 2002。

 .NET平台結構圖:

我們看上圖,我們一一來做解釋:

硬件設備和操作系統我就不做解釋了,這是軟件運行的載體或環境,計算機行業的基礎。

 

.NET Framework(以下簡稱.NET 框架):

.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 框架的用途:
1、提供了一個面向對象的編程環境,完全支持面向對象編程。
提高了的可復用、可擴展性、可維護性、靈活性
2、對Web Service(WEB服務)的支持
3、實現SOA,支持雲計算(windows Azure)
4、支持構建.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窗體應用程序開發等基本的功能。
在此之后,引入了許多新的特性:
1、WPF:
微軟Vista操作系統的核心開發庫之一,是一個圖形引擎
作用:實現界面顯示與程序代碼更好的分離
 
2、WCF:
把Web服務、.NET Remoting等技術統一到單個面向服務的編程模型中,以實現真正的分布式計算。
 
3、WF:
WF是一個廣泛通用的工作流程框架,從下到上在每個級別都針對擴展性進行了設計。
 
4、Windows CardSpace:
是微軟公司取代用戶名和密碼成為驗證網絡使用有者身份的新方法。
 
5、LinQ:
查詢集成語言,簡化不同數據源對象查詢操作。
 
6、Ado.net Entity Framework
簡稱EF,是微軟以 ADO.NET 為基礎所發展出來的對象關系對應 (O/R Mapping) 解決方案( ORM框架),早期被稱為 ObjectSpace,

該框架在version 6之后從.NET Framework分離出來。

7、Parallel linq

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

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

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

 

8、Task parallel library

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

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

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

通過使用 TPL,你可以在將精力集中於程序要完成的工作,同時最大程度地提高代碼的性能。

 

9、Modern UI Runtime

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

 

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

 

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

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

 

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

結構圖如下:

 


免責聲明!

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



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