.NET平台系列5 .NET Core 簡介


  自1995年互聯網戰略日以來最雄心勃勃的事業 —— 微軟.NET戰略, 2000年6月30日。  

  微軟公司於2002年2月13日正式推出第一代.NET平台 .NET Framewrok 1.0。借助於自家強大易用的 Windows 系統,.NET Framework1.0 主要提供了面向 Windows 桌面(Windows Form)和服務器(ASP.NET Web Forms)的基礎開發框架。在宇宙第一IDE(Visual Studio)中使用這兩款框架進行業務系統開發,框架中都提供了功能強大的控件、組件,開發者通過可視化編程方式進行開發就非常容易上手,而且開發速度非常快,因此.NET平台深受全世界開發者的喜愛,發展一路順風順水。

  在.NET(舊稱.NET Framework )發展過程中,其最大的競爭對手就是Java。Java是主打敏捷開發、跨平台的編程語言,自1995年推出Java正式版以來,憑借其天生的跨平台(Windows、Linux、MacOS)優勢,發展至今在全世界開發者市場與生態圈層面遠遠超過.NET平台。.NET Framework 與 Windows 平台深度綁定,無法做到跨平台,所以一直處於被Java壓制的狀態。

  互聯網技術飛速發展至今,傳統的桌面程序與Web應用已無法滿足各行各業的多場景應用需求。雲計算、人工智能、大數據以及雲原生等新興技術方向在現代IT時代掀起了一波又一波浪潮。傳統的 .NET Framework 技術極大地限制了.NET平台的應用范圍與發展,面對如此尷尬的局面與現狀,微軟審時度勢,於2014年推出跨平台解決方案.NET Core。

  2014年11月12日,微軟ASP.NET之父Scott Guthrie 在 Connect 全球開發者在線會議上宣布,微軟將開源全部的.NET Core 運行時,並將.NET 擴展為可在Linux和maxOS平台上開發與運行,從而讓.NET應用實現跨平台。

dotnet/runtime 開源地址:https://github.com/dotnet/runtime

dotnet/core 發行日志:     https://github.com/dotnet/core/tree/main/release-notes

dotnet SDK 下載地址:     https://dotnet.microsoft.com/download

  .NET Core 的推出是微軟.NET技術發展史上又一個重要里程碑。.NET Core是.NET技術的重要變革,它將全世界.NET開發者帶入一個全新的開發領域。

1、.NET Core 定義

  .NET Core is a free, cross-platform, open-source developer platform for building many different types of applications. 這是微軟官方給出的定義:.NET Core是一個免費、跨平台、開源的開發平台,用於構建許多不同類型的應用程序。

  .NET Core 設計目標有包含:

  • 支持或可以移轉 (port) 到更多的操作系統平台與芯片架構 (未來項目會跨出 x86 平台。目前已至此x64、arm)。
  • 具有引人注目的性能與高可靠度。
  • 開發人員能快速與直接的獲取 .NET Core 開發環境。
  • 在直覺與具生產力的情況下建造應用程序,使用文件,示例與 NuGet 組件。
2、.NET Core 包管理

  .NET Core 的類庫采用 NuGet 包化的架構,應用程序只需要使用 project.json 的 dependencies 區塊加入指定包版本的參考,就能獲得該包的功能,與以往 .NET Framework 大包式的提供方法完全不同。.NET Core 團隊宣布己經有 98% 的 .NET Framework 主要類庫移轉到 .NET Core 平台。

.NET Standard Library 是一個總括型的 NuGet Package,其內包含了這些類庫包:
  • Microsoft.DotNet.CoreHost
  • NETStandard.Platform
  • System.Collections.Concurrent
  • System.Linq
  • System.Runtime.Numerics
  • System.Text.RegularExpressions
其中的 NETStandard.Platform 也是一個總括型包,包含了下列類庫包:
  • Microsoft.NETCore.Platforms
  • Microsoft.NETCore.Runtime
  • Microsoft.Win32.Primitives
  • System.AppContext
  • System.Collections
  • System.Diagnostics.Debug
  • System.Diagnostics.Tools
  • System.Diagnostics.Tracing
  • System.Globalization
  • System.Globalization.Calendars
  • System.IO
  • System.IO.FileSystem
  • System.IO.FileSystem.Primitives
  • System.Net.Primitives
  • System.Net.Sockets
  • System.Reflection
  • System.Reflection.Extensions
  • System.Reflection.Primitives
  • System.Reflection.TypeExtensions
  • System.Runtime
  • System.Runtime.Extensions
  • System.Runtime.Handles
  • System.Runtime.InteropServices
  • System.Runtime.InteropServices.RuntimeInformation
  • System.Text.Encoding
  • System.Text.Encoding.Extensions
  • System.Threading
  • System.Threading.Tasks
  • System.Threading.Timer
開發人員只需要使用 NETStandard.Library 就能加入所有必要的 .NET Core 類庫參考,但若不需要這么多組件,也可以只加入特定的包即可,不一定都要加入 NETStandard.Library。
3、.NET Core 支持的應用程序類型

  .NET Core 基於跨平台能力,並沒有將與 GUI 高度相關的 API 移植到 .NET Core 內,因此像是Windows Forms或是Windows Presentation Foundation(WPF) 並未移植到 .NET Core。.NET Core 支持控制台應用程序 (Console Application) 以及類庫 (Class Library) 類型的項目。

  不過微軟在其Universal Windows Platform(UWP) 開發平台使用了 .NET Core ,並且利用 .NET Native 技術將其性能提升至十分接近原生碼的速度。
  ASP.NET Core 則以控制台應用程序驅動其托管環境 Kestrel Server 以支持 ASP.NET Core 程序的運行。
  .NET CLI (Command-Line Interface) 指令列工具是 .NET Core 處理建造、運行與編輯工作的主要工具 ,有幾個主要的動作:

指令
幫助
dotnet new
產生新的基本 .NET 項目內容 (包含 project.json、Program.cs 以及 NuGet.config)
dotnet restore
還原所參考的 NuGet 包
dotnet build
建造 .NET 項目
dotnet publish
產生可發行的 .NET 項目 (包含所屬的 Runtime)
dotnet run
編譯與立即運行 .NET 項目 (較適用於 exe 型項目)
dotnet repl
引導交互式的對話
dotnet pack
將項目的產出封裝成 NuGet 包
 

提示:命令都是神一般的存在,我們凡人還是使用 Visual Studio 進行開發、編譯、發布,效率最高。

4、.NET Core 與其他平台的關系

  .NET Core 經常會拿來與其他平台做類比,尤其是它的源頭 .NET Framework 以及另一個相似性質的開源平台 Mono。

  .NET Framework
  據微軟的幫助文檔介紹,.NET Core 和 .NET Framework 是子集 (Subset) 與超集 (Superset) 的關系,.NET Core 將會實現出部分的 .NET Framework 功能 (基本上是不含用戶界面的部分),例如 JIT (.NET Core 采用 RyuJIT)、垃圾收集器 (GC) 以及類型 (包含基本類型以及泛型類型等)。未來 .NET Framework 和 .NET Core 也將會是各自發展,但它們也會同時使用彼此的功能,例如 .NET Compiler Platform 與 RyuJIT 等技術。
 
  Mono
  Mono 是另一個已發展許久的 .NET Framework 跨平台開源版本,基本上並不隸屬微軟官方,而是由社區的力量所主導,自成一個生態系統,也開發出了像Xamarin這樣的跨平台.NET移動應用,.NET Core 與 Mono 未來會是合作的關系,Mono 仍會維持社區力量的維護與發展,而 .NET Core 則會以官方角度來進行發展,兩邊也會一起進行彼此功能上的增進 。
 
  與 ASP.NET Core 的關系
  .NET Core 與 ASP.NET Core 的關系其實一開始並不是主從關系  ,ASP.NET Core 的開發初期 (ASP.NET 5) .NET Core 還沒有開始起跑,因此 ASP.NET Core 當時有自己的運行期與工具,一開始稱為 Project K,后來改為 DNX (.NET Execution Environment),DNX 本身就具有可獨立運作的運行能力,不需要依賴 .NET Core 運行,但是這樣會變成 .NET Core 和 ASP.NET Core 雙頭馬車的現象,在 .NET Core 逐漸成熟之后,微軟也決定要將這兩個各自獨立發展的產品線集成在一起,DNX 也將因改用 .NET Core 運行期而終止開發,DNX 的功能將由 .NET Core 以及旗下的 .NET CLI 接替提供,集成后的版本將在 1.0 RC2 時發布。
 
5、.NET Core 支持的操作系統

  下表列出了當前支持的 .NET 版本以及支持它們的 Windows 版本。 這些版本在 .NET 版本達到支持終止日期Windows 版本達到生命周期之前仍受支持。

Windows 10 版本終止服務日期按版本分段。 下表中僅考慮家庭版、專業版、專業教育版和專業工作站版。 查看 Windows 生命周期事實表單,了解具體的詳細信息。

    • 不支持的版本

        以下 .NET 版本 ❌ 不再受到支持:

                     

6、.NET Core 支持開發的應用程序
 

.NET Core/.NET6 平台目前打通並支持7大應用方向:桌面開發、網頁開發、游戲開發、移動應用、雲計算、物聯網IoT、人工智能AI (機器學習ML.NET、大數據.NET for Apache Spark )。足以看出.NET 平台的強大。但是這還不夠,微軟一直做出非常大的努力,通過在 Visual Studio 開發工具中編寫一套代碼,可以一次編譯並發布運行至多終端運行。截止目前在宇宙中僅此微軟一家能夠做到如此。

參考鏈接

【1】https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md

【2】https://github.com/dotnet/corefx

【3】https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/glossary.md

【4】https://www.microsoft.com/net/core#windows

【5】https://msdn.microsoft.com/en-us/library/dn807190(v=vs.110).aspx

【6】https://blogs.msdn.microsoft.com/dotnet/2013/09/30/ryujit-the-next-generation-jit-compiler-for-net/

【7】https://zh.wikipedia.org/wiki/.NET_Core


免責聲明!

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



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