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

第2章 .NET Core

2.1 .NET Core特性

.NET Core具有以下特性:

●跨平臺:可以在Windows、macOS和Linux系統(tǒng)上運(yùn)行。

●跨體系結(jié)構(gòu)保持一致:在多個體系結(jié)構(gòu)(包括x64、x86和ARM)上以相同的方式運(yùn)行代碼。

●命令行工具:包括可用于本地開發(fā)和持續(xù)集成方案中的易于使用的命令行工具。

●部署靈活:可以包含在應(yīng)用或已安裝的并行用戶或計(jì)算機(jī)程序中。可搭配Docker容器使用。

●兼容性:.NET Core通過.NET Standard與.NET Framework、Xamarin和Mono兼容。

●開放源代碼:.NET Core平臺是開放源代碼的,使用MIT和Apache 2許可證。.NET Core是一個.NET Foundation項(xiàng)目。

●由Microsoft支持。

1.語言

可以使用C#、Visual Basic和F#語言編寫適用于.NET Core的應(yīng)用程序和庫。這些語言已集成或可以集成到文本編輯器和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>。

●實(shí)用程序類型,例如System.Net.Http.HttpClient和System.IO.FileStream。

●數(shù)據(jù)類型,例如System.Data.DataSet和DbSet。

●高性能類型,例如System.Numerics.Vector和Pipelines。

.NET Core通過實(shí)現(xiàn).NET Standard規(guī)范提供對.NET Framework和Mono API的兼容性。

3.框架

在.NET Core之上建立了多個框架:

●ASP.NET Core.

●Windows 10通用的Windows平臺(UWP)。

●Tizen.

4.結(jié)構(gòu)

.NET Core包括以下幾部分。

●.NET Core運(yùn)行時:提供類型系統(tǒng)、程序集加載、垃圾回收器、本機(jī)互操作和其他基本服務(wù)。.NET Core框架庫提供基元類型、應(yīng)用編寫類型和基本實(shí)用程序。

●ASP.NET運(yùn)行時:提供框架以生成基于新式云的Internet連接的應(yīng)用程序,例如Web應(yīng)用、IoT應(yīng)用及移動后端。

●.NET Core CLI工具和語言編譯器(Roslyn和F#):提供.NET Core開發(fā)人員體驗(yàn)。

●dotnet工具:用于啟動.NET Core應(yīng)用和CLI工具。它選擇運(yùn)行時并托管運(yùn)行時,提供程序集加載策略并啟動應(yīng)用和工具。

這些組件按以下方式分布:

●.NET Core運(yùn)行時,包括.NET Core運(yùn)行時和框架庫。

●ASP.NET Core運(yùn)行時,包括ASP.NET Core和.NET Core運(yùn)行時及框架庫。

●.NET Core SDK,包括.NET CLI工具、ASP.NET Core運(yùn)行時,以及.NET Core運(yùn)行時和框架。

5.開源

.NET Core是開源的(MIT許可證),由Microsoft于2014年提供給.NET Foundation。目前它是最活躍的.NET Foundation項(xiàng)目之一,可由個人和企業(yè)自由采用,包括用于個人、學(xué)術(shù)或商業(yè)目的。許多公司已使用.NET Core作為應(yīng)用、工具、新平臺和托管服務(wù)的一部分。其中某些公司對GitHub上的.NET Core做出了巨大貢獻(xiàn),并已成為.NET Foundation Technical Steering Group(.NET Foundation技術(shù)控制組)的成員,指導(dǎo)產(chǎn)品方向。

6.針對適應(yīng)性而設(shè)計(jì)

與其他.NET產(chǎn)品相比,生成的.NET Core與它們十分類似,但具有唯一性,其目的是能夠廣泛適應(yīng)新的平臺和工作負(fù)載。它提供多個OS和CPU端口,并可以移植到更多端口。

該產(chǎn)品分為幾個部件,各個部件能夠在不同的時間適應(yīng)新的平臺。必須將運(yùn)行時和特定于平臺的基礎(chǔ)庫作為一個單元進(jìn)行移植。與平臺無關(guān)的庫應(yīng)在所有平臺上按照構(gòu)建的原樣運(yùn)行。對于通過減少特定于平臺的實(shí)現(xiàn)以提高開發(fā)人員效率方面,項(xiàng)目存在偏差,但每當(dāng)可以以此方式全部或部分實(shí)現(xiàn)算法或API時,都應(yīng)首選與平臺無關(guān)的C#代碼。

人們經(jīng)常會問,為支持多個操作系統(tǒng)應(yīng)如何實(shí)現(xiàn).NET Core?他們還會問是否存在單獨(dú)的實(shí)現(xiàn),或是否使用conditional compilation(條件編譯)。這兩者都在用,但強(qiáng)烈偏向條件編譯。

大多數(shù)CoreFX代碼都是與平臺無關(guān)的代碼,這些代碼可在所有平臺共享,如圖2-1所示。不限平臺的代碼可實(shí)現(xiàn)為在所有平臺上使用的單個可移植程序集。

圖2-1

Windows和UNIX的實(shí)現(xiàn)相似。Windows具有較大的實(shí)現(xiàn),因?yàn)镃oreFX實(shí)現(xiàn)了某些僅適用Windows的功能,如Microsoft.Win32.Registry,但尚未實(shí)現(xiàn)多個僅適用UNIX的功能。大多數(shù)Linux和macOS實(shí)現(xiàn)都是在UNIX實(shí)現(xiàn)中實(shí)現(xiàn)的,而特定于Linux和macOS的實(shí)現(xiàn)大致相同。

.NET Core中存在特定于平臺和與平臺無關(guān)的庫:

●CoreCLR是特定于平臺的。它建立在內(nèi)存管理器和線程計(jì)劃程序等操作系統(tǒng)子系統(tǒng)的基礎(chǔ)上。

●考慮到每個OS上的存儲和加密API都有所不同,System.IO和System.Security.Cryptography.Algorithms是特定于平臺的。

●考慮到它們通過數(shù)據(jù)結(jié)構(gòu)創(chuàng)建和操作,System.Collections和System.Linq是與平臺無關(guān)的。

主站蜘蛛池模板: 株洲县| 轮台县| 东海县| 峨眉山市| 安泽县| 马鞍山市| 顺昌县| 资溪县| 焦作市| 泰兴市| 临西县| 开鲁县| 化隆| 陕西省| 沙湾县| 新野县| 盐城市| 贵阳市| 隆林| 合川市| 余干县| 肥乡县| 四会市| 兰州市| 巴南区| 罗江县| 射阳县| 旌德县| 同仁县| 建昌县| 百色市| 巴楚县| 宣城市| 光泽县| 龙海市| 宾阳县| 华池县| 建平县| 平遥县| 同江市| 洪雅县|