ASP.NET Core项目开发实战入门
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第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是与平台无关的。