跳至內容

.NET

出自Taiwan Tongues 客語維基
這是此頁批准,以及是最近的修訂。

. NET( 三千五百二十一版頭擺安做. NET Core) 係微軟開發个第一個跨平台 ( Windows、Mac OSX、Linux)个應用程式開發框架(Application Framework), 未來也會支援 FreeBSD 摎 Alpine 平台。. Net Core 乜係微軟在一開始發展个時節就開源个軟體平臺,佢不時乜會拿來摎現有个開源 .NET 平台 Mono 過。

因為 . NET Core 个開發目標係跨平台个 . NET 平台,故所 . NET Core 會包含 . NET Framework 類別庫,毋過同 .NET Framework 無共樣个係 . NET Core 採用著套件化 ( Packages ) 个管理方式,應用程式單淨需要取得需要个組件就做得,摎 . NET Framework 大包式安張个做法截止無共樣,同時各套件也有獨立个版本線 ( Version line ),毋會再過硬性要求應用程式跈等主線个版本。

. NET Core 專案个主要目標有:

一 . 支援或者做得移轉( port ) 到還較多个作業系統平台摎晶片架構 ( 也就係未來計畫會跨出 x 八十六平台 )。 二 . 有餳人注意个效能還有高可靠个機會。 三 . 開發人員做得當遽同直覺个獲取 . NET Core開發環境。 四 . 在直覺摎具有生產力个情況之下建造應用程式,使用檔案,範例摎 NuGet 元件。

歷史

. NET Core 一千五百空二十一六年六月二十七號開始放出。二零二零年十一月,Microsoft釋出吔 . NET 五千八百空,統一了 . NET 个各平台个碎片版本:. NET Framework 四圍八角 , . NET Standard , . NET Core 三千空八十 , Mono , Xamarin 等。

二零二一年十一月,Microsoft釋出吔 . NET 六千空八百空。

二零二二年十一月,Microsoft釋出吔 . NET 七千八百空。

核心功能

. NET Core 係由當多專案所組成个,除了基本个類別庫 ( Core FX ) 之外,乜包含採用 RyuJIT 編譯个執行平台 Core CLR、編譯器平台 . NETCompiler Platform、採用著 AOT 編譯技術運行最佳化个套件 Core RT ( . NET Core Runtime ),還有跨平台个 MSIL 編譯器 LLILC ( LLVM-based MSIL Compiler ) 等專案。

同時,微軟發展咧一個建置技術檔案个平臺 docfx,運用於 . NET Core 个檔案網站。

RyuJIT

RyuJIT 係微軟發展个新式即地編譯器 ( Just-in-Time Compiler ),用取代現有个 . NET Framework 个 JIT 還有 JIT 六十四就地編譯器,根據微軟公布个測試報告,RyuJIT 个效能比前一代个 JIT 提升差毋多二十五pa24,還過支援 SIMD ( Single Instruction , Multiple Data )个技術。RyuJIT 同時應用於 . NET Framework 四千五百六十二還過 . NET Core。

Core CLR

Core CLR 移植 . NET Framework 个 CLR 个功能,包含核心程式庫 mscorlib、JIT 編譯器、垃圾收集器 ( GC ) 還有其他執行 MSIL 需要个執行期環境。

Core RT

Core RT 係以預先編譯為主个核心功能,在 . NET Core 內安到 Core RT,在 UWP 佢就安到 . NET Native。

Core RT 會在起个時期 ( 無來執行期 ) 在編譯个時節將 MSIL 轉換做平台原生个機器碼,來得著較短个啟動時間 ( JIT 採用个係執行時期編譯,使得啟動時間拉長 ),還有記憶體用量減少个優點。Core RT 會在無共樣个平台使用無共樣个 AOT 技術:

  • Windows 上使用个係 . NET Native。
  • Mac OS 摎 Linux 上使用个係 LLILC ( 同時支援 JIT 摎 AOT )。

LLILC

LLILC ('LLVM-based MSIL'Compiler,英文發音為 " lilac " ) 好 . NET Core 在非 Windows 平台个 MSIL 編譯器,因為 ECMA 三百三十五 ( Common Language Infrastructure ) 个標準將 MSIL 翻譯變作原生碼執行, 適用於做得運行 LLVM 个作業系統,比將講 Mac OSX 摎 Linux 作業系統。

LLILC 同時支援 JIT ( 內含 RyuJIT 實作 ) 還有 AOT ( 未來會開始支持援助 ) 个編譯方式。

Roslyn

. NET Compiler Platform ( 專案代碼係 Roslyn ) 係將 . NET 平台个編譯架構標準化个平台,佢做得提供程式管理工具 ( 像係整合開發環境 ) 相當多个情報,用發展做對編寫程式摎管理程式結構所需要个功能,比方講型別个資訊、語法結構、參考連結、語意、編譯器、自動化、錯誤回報等等个功能,係講有遵循CLI 標準个程式語言,都做得來利用 . NET Compiler Platform 實作出編譯器,分程式管理工具做得實際來做如語法提示、語法自動來完成、關鍵字這兜視覺化个能力。

. NETCompiler Platform 做得同時支援 . NET Framework 四千五百六以上个版本,. NET Core 乜原生支援。

落件管理

. NET Corev 一千五百空時期

. NET Core 个類別庫採用 NuGet 套件化个架構,應用程式淨需要使用 project . json 个 dependencies 區段加入指定套件版本个參考,就做得有該套件个功能,摎頭擺共樣 . NET Framework 大包式个提供方法完全無共樣。. NET Core 團隊宣布既經有百分之九十八个 . NET Framework 主要類別庫移轉到 . NET Core 平台。

比將講下列 project . json 內容,做得直接加入 . NET Standard Library ( v 一千擔 . 零 -rc 二十九八六三千九百空一 ) 个參考。

. 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 . Win 這頂高个三十二個 . 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。

. NET Core v 一千擔一百空二

對微軟來講,. NET Core 一千擔 ( 還過早期開發个時節 ) 使用 project . json 來處理套件管理摎版本相依照个問題,係因為當多工具還吂逐著 (比論講微軟主力个建置工具 MSBuild ),過加上 project . json / xproj 架構並無相容於以 MSBuild 為主个工具鏈 ( Toolchain ),若係愛修改做相容 project . json / xproj 架構可能會付出當大个成本,故所在 . NET Core 一千擔 RC 二發布無幾久,官方就宣布愛將 project . json / xproj 系統徙轉到以 MSBuild 為主个 csproj,比將講下列 csproj 个例仔就使得看著套件參考个內容。

因為 . NET Core 徙轉去了 MSBuild 架構,故所在 VisualStudio 二千空一十七个 . NET Core 工具內,已經恢復做得直接在 IDE 个 GUI 介面中編修套件參考个功能。

應用程式類型

. 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 程式个執行。

. NETCLI

. NET CLI ( Command-Line Interface ) 指令列工具係 . 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 五 ) . 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 接替提供,整合過後个版本會在一千空八百空RC 二時展出。

支援作業系統

. NET 七支援下列作業系統:

參考