官术网_书友最值得收藏!

第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是與平臺無關的。

主站蜘蛛池模板: 台南市| 岢岚县| 屯门区| 南宫市| 延长县| 四会市| 浏阳市| 青阳县| 克山县| 达尔| 荃湾区| 毕节市| 仲巴县| 宁国市| 杂多县| 湘阴县| 东丽区| 六盘水市| 吉安市| 德钦县| 广西| 新昌县| 会东县| 宿州市| 纳雍县| 大理市| 呼图壁县| 翼城县| 阳城县| 天长市| 延吉市| 南丹县| 梅河口市| 巴林左旗| 张家川| 敦化市| 凤台县| 封丘县| 日喀则市| 法库县| 辽源市|