- ASP.NET Core項目開發實戰入門
- 張劍橋編著
- 5字
- 2020-09-25 13:00:55
第2章 .NET Core
2.1 .NET Core特性
.NET Core具有以下特性:
●跨平臺:可以在Windows、macOS和Linux系統上運行。
●跨體系結構保持一致:在多個體系結構(包括x64、x86和ARM)上以相同的方式運行代碼。
●命令行工具:包括可用于本地開發和持續集成方案中的易于使用的命令行工具。
●部署靈活:可以包含在應用或已安裝的并行用戶或計算機程序中。可搭配Docker容器使用。
●兼容性:.NET Core通過.NET Standard與.NET Framework、Xamarin和Mono兼容。
●開放源代碼:.NET Core平臺是開放源代碼的,使用MIT和Apache 2許可證。.NET Core是一個.NET Foundation項目。
●由Microsoft支持。
1.語言
可以使用C#、Visual Basic和F#語言編寫適用于.NET Core的應用程序和庫。這些語言已集成或可以集成到文本編輯器和IDE中,如Visual Studio、Visual Studio Code、Sublime Text和Vi m。
2.API
.NET Core公開了多種方案的API,常見的有以下幾種:
●基元類型,例如bool和int。
●集合,例如System.Collections.Generic.List<T>和System.Collections.Generic.Dictionary<TKey,TValue>。
●實用程序類型,例如System.Net.Http.HttpClient和System.IO.FileStream。
●數據類型,例如System.Data.DataSet和DbSet。
●高性能類型,例如System.Numerics.Vector和Pipelines。
.NET Core通過實現.NET Standard規范提供對.NET Framework和Mono API的兼容性。
3.框架
在.NET Core之上建立了多個框架:
●ASP.NET Core.
●Windows 10通用的Windows平臺(UWP)。
●Tizen.
4.結構
.NET Core包括以下幾部分。
●.NET Core運行時:提供類型系統、程序集加載、垃圾回收器、本機互操作和其他基本服務。.NET Core框架庫提供基元類型、應用編寫類型和基本實用程序。
●ASP.NET運行時:提供框架以生成基于新式云的Internet連接的應用程序,例如Web應用、IoT應用及移動后端。
●.NET Core CLI工具和語言編譯器(Roslyn和F#):提供.NET Core開發人員體驗。
●dotnet工具:用于啟動.NET Core應用和CLI工具。它選擇運行時并托管運行時,提供程序集加載策略并啟動應用和工具。
這些組件按以下方式分布:
●.NET Core運行時,包括.NET Core運行時和框架庫。
●ASP.NET Core運行時,包括ASP.NET Core和.NET Core運行時及框架庫。
●.NET Core SDK,包括.NET CLI工具、ASP.NET Core運行時,以及.NET Core運行時和框架。
5.開源
.NET Core是開源的(MIT許可證),由Microsoft于2014年提供給.NET Foundation。目前它是最活躍的.NET Foundation項目之一,可由個人和企業自由采用,包括用于個人、學術或商業目的。許多公司已使用.NET Core作為應用、工具、新平臺和托管服務的一部分。其中某些公司對GitHub上的.NET Core做出了巨大貢獻,并已成為.NET Foundation Technical Steering Group(.NET Foundation技術控制組)的成員,指導產品方向。
6.針對適應性而設計
與其他.NET產品相比,生成的.NET Core與它們十分類似,但具有唯一性,其目的是能夠廣泛適應新的平臺和工作負載。它提供多個OS和CPU端口,并可以移植到更多端口。
該產品分為幾個部件,各個部件能夠在不同的時間適應新的平臺。必須將運行時和特定于平臺的基礎庫作為一個單元進行移植。與平臺無關的庫應在所有平臺上按照構建的原樣運行。對于通過減少特定于平臺的實現以提高開發人員效率方面,項目存在偏差,但每當可以以此方式全部或部分實現算法或API時,都應首選與平臺無關的C#代碼。
人們經常會問,為支持多個操作系統應如何實現.NET Core?他們還會問是否存在單獨的實現,或是否使用conditional compilation(條件編譯)。這兩者都在用,但強烈偏向條件編譯。
大多數CoreFX代碼都是與平臺無關的代碼,這些代碼可在所有平臺共享,如圖2-1所示。不限平臺的代碼可實現為在所有平臺上使用的單個可移植程序集。

圖2-1
Windows和UNIX的實現相似。Windows具有較大的實現,因為CoreFX實現了某些僅適用Windows的功能,如Microsoft.Win32.Registry,但尚未實現多個僅適用UNIX的功能。大多數Linux和macOS實現都是在UNIX實現中實現的,而特定于Linux和macOS的實現大致相同。
.NET Core中存在特定于平臺和與平臺無關的庫:
●CoreCLR是特定于平臺的。它建立在內存管理器和線程計劃程序等操作系統子系統的基礎上。
●考慮到每個OS上的存儲和加密API都有所不同,System.IO和System.Security.Cryptography.Algorithms是特定于平臺的。
●考慮到它們通過數據結構創建和操作,System.Collections和System.Linq是與平臺無關的。