跳至內容

.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 一鋪排佇二空一六年六月二十七號釋出。

二空二空年十一月,軟軟仔釋出矣 . NET 五曉空,統一矣 . NET 的每一个平台的碎片版本:. NET Framework 四配八 , . NET Standard , . NET Core 三孵一 , Mono , Xamarin 等。

二空二一年十一月,軟軟仔釋出矣 . NET 六板零。

二空二二年十一月,軟軟仔釋出矣 . NET 七鼗零。

核心功能

. NET Core 是由真濟專案所組成,除了基本的類別庫 ( Core FX ) 以外,嘛包括採用 RyuJIT 編譯的執行平台 Core CLR、編譯器平台 . NET Compiler 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 提升約是百分之二十五,並支援 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 實作出編譯器,予程式管理工具會當實作如語法提示、語法自動完成、關鍵字突顯等視覺化能力。

. NET Compiler Platform 可同時支援 . NET Framework 四配六以上的版本,. NET Core 嘛原生支援。

套件管理

. NET Core v 一丈零的時陣

. 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 架構,所以佇遮 Visual Studio 二千空一十七的 . 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 程式的執行。

. NET CLI

. 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 七支援下列作業系統:

參考