.NET Core文档--关于.NET Core

关于.NET Core

.NET Core具有以下特性:

  • 跨平台:可在Windows,macOS和Linux操作系统上运行.
  • 扩体系结构保持一致:在多个体系结构(包括x64,x86和ARM)上以相同的行为运行代码.
  • 命令行工具:包括可用于本地开发和持续集成方案中的易于使用的命令行工具.
  • 部署灵活:可以包含在应用或已安装的并行(用户或系统范围安装)中.可搭配Docker容器使用.
  • 兼容性:.NETCore通过.NET Standard与.NET Framework,Xamarin和Mono兼容.
  • 开放源代码:.NET Core平台是开放源代码,使用MIT和Apache 2许可证..NET Core是一个.NET Foundation项目.
  • 由Microsoft支持:.NET Core由Microsoft根据.NET Core支持提供支持.

语言

可以使用C#,Visual Basic和F#语言编写适用于.NET Core的应用程序和库.这些语言可在你喜欢的文本编辑器或集成开发环境(IDE)中使用,包括:

  • Visual Studio
  • Visual Studio Code
  • Sublime Text
  • Vim

这种集成部分由OmniSharp和Lonide醒目的参与者提供.

API

.NET Core公开了多种方案的API,一下介绍了几种:

  • 基元类型,如System.Boolean和System.Int32.
  • 集合,例如System.Collections.Generic.List<T>和System.Collections.Generic.Dictionary<TKey, T Value>.
  • 实用程序类型,例如System.Data.DataSet和DbSet.
  • 高性能类型,例如System.Numerics.Vector和pipelines.

.NET Core通过实现.NET Standard规范提供.NET Framework和Mono API的兼容性.

框架

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

  • ASP.NET Core
  • Windows 10通用Windows平台(UWP)
  • Tizen

撰写

.NET Core包括以下部分:

  • .NET Core运行时:提供类型系统,程序集加载,垃圾回收期,本机互操作和其他基本服务..NET Core酷安假哭:提供济源数据类型,应用编写类型和基本应用程序.
  • ASP.NET Core 运行时:提供一个框架来生成基于云且连接到Internet的新式应用程序,例如Web应用,IoT应用和移动后端.
  • .NET Core SDK的语言编译器(Roslyn和F#):提供.NET Core开发人员体验.
  • dotnet命令:用于启动.NET Core应用和CLI命令.它选择运行时并托管运行时,提供程序集加载策略并启动应用和工具.

这些组件采用以下方式分部:

  • .NET Core运行时 -- 包括.NET Core运行时和框架库.
  • ASP.NET Core运行时 -- 包括ASP.NET Core和.NET Core运行时以及框架库.

开源

.NET Core石凯元的(MIT许可证),由Microsoft于2014年提供给.NET Foundation.它现在是最活跃的.NET Foundation项目之一.个人和公司可处于个人,学术或商业等目的对其进行使用.许多公司将.NET Core用作应用,工具,新平台和托管服务的一部分.其中某些公司在GitHub上为.NET Core做出了巨大贡献,并作为.NET Foundation Technical Steering Group(.NET Foundation技术控制组)的成员为产品方向提供指导.

针对适应性而设计

经过构建,.NET Core与其他.NET产品相似,但也存在独特性.它旨在实现对新平台和工作符合广泛的适应性,还提供了多个OS和CPU端口(且可能会移植到更多端口上).

该产品分为几个部分,使各个部件能够在不同的时间适应新的平台.必须将运行时和特定于平台的基础库作为一个单元进行移植.与平台无关的库赢在所有平台上按照构建的原样运行.在减少特定于平台的实现来提高开发人员效率方面存在项目偏差,但每当可以此方式全部或部分实现算法或API时,都应首选与平台无关的C#代码.人们经常会问,为支持多个操作系统如何实现.NET Core.他们还会问是否存在单独的实现,或是否使用conditional compilation(条件编译).这两者都在痛,但强烈偏向条件编译.

可以在下面的图标看出大多数.NET Core库都是与平台无关的代码,该代码可在所有平台共享.不限平台的代码可实现为在所有平台上使用的单个可移植程序集.

 

 Windows和Unix实现大小相似.Windows的实现范围更广,这是因为.NET Core库会实现某些仅适用于Windows的功能(如Microsoft.Win32.Registry),但尚未实现很多仅使用于Unix的概念.你还将发现大多数Linux和macOS实现都跨Unix实现共享,而特定于Linux和macOS的实现大小大致相同.

.NET Core中既存在平台特定的库,也存在与平台无关的库.可以查看几个实例中的模式:

  • CoreCLR是特定于平台的.它建立在内存管理器和线程计划程序等操作系统子系统的基础上.
  • 考虑到每个OS上的存储和加密API都有所不同,System.IO和System.Security.Cryptography.Algorithms是特定于平台的.
  • 考虑到它们是通过数据结构创建和操作,System.Collection和System.Linq是与平台无关的.

与其他.NET实现对比

通过将.NET Core与现有的.NET实现进行比较,可能要更容易了解其大小和状态.

与.NET Framework比较

.NET由Microsoft与2000年首次发布,而后发展到至今.近20年以来,.NET Framework一直是Microsoft出品的主要.NET实现.

.NET Core 和.NET Framework的主要差异在于:

  • 应用模型 - .NET Core并非支持全部.NET Framework应用模型.具体而言,它不支持ASP.NET Web窗体和ASP.NET MVC,但支持ASP.NET Core MVC.自.NET Core3.0起,.NET Core还支持WPF和Windows窗体(仅限在Windows上).
  • API -- .NET Core包含.NET Framework积累库的一个大型子集,但具有不同的组成要素(程序集名称不同;类型上公开的成员在关键用例中不同).在某些情况下,这些差异要求进行更改,以将源移植到.NET Core中.
  • 子系统 -- .NET Core实现.NET Framework中子系统的子级,目的是实现更简单的实现和编程模型,例如,不支持代码访问安全性(CAS),但支持反射.
  • 平台 -- .NET Framework支持Windows和Windows Server,而.NET Core还支持macOS和Linux.
  • 开源 -- .NET Core是开源的,而.NET Framework的只读子集是开源的.

虽然.NET Core是唯一的且与.NET Framework和其他.NET实现大不相同,但可食用源或二进制共享技术在这些实现之间轻松共享代码.

由于.NET Core支持并行安装及其运行时完全独立于.NET Framework,它可以安装在装有.NET Framework的计算机上,不会出现任何问题.

与Mono比较

Mono是.NET的初始跨平台实现.它一开始是用作.NET Framework的开源替代项,之后随着iOS和Android设备变得流行,过渡到面向移动设备.可将它看作是.NET Framework的社区克隆.Mono项目团队依赖于Microsoft发布的.NET标准(尤其是ECMA 335)来实现兼容性.

.NET Core和Mono的主要差异在于:

  • 应用模型 - Mono通过Xamarin产品支持部分.NET Framework应用模型(例如Windows 窗体)和其他移动开发辅助模型(例如Xamarin.iOS).而.NET Core不支持Xamarin.
  • API -- Mon使用相同程序集名称和组成要素支持.NET Framework API的大型子集.
  • 平台 -- Mono支持很多平台和CPU.
  • 开源 -- Mono和.NET Core两者都使用MIT许可证,且都属于.NET Foundation醒目.
  • 焦点 -- 最近几年,Mono的主要焦点是移动平台,而.NET Core的焦点是云和桌面工作负载.

未来动向

已宣布.NET5将成为.NET Core的下一版本且表示平台实现统一.系项目旨在以几项关键方法来改进.NET:

  • 生成可随处使用且提供统一运行时行为和开发人员体验的单一.NET运行时和框架/
  • 通过充分利用.NET Core,.NET Framework,Xamarin和Mono来扩展.NET的功能.
  • 根据单个基本代码构建开发人员(Microsoft和社区)可处理且协同发展,同事可改善所有方案的产品.

 

posted @ 2020-03-26 11:38  l1ncj  阅读(617)  评论(0编辑  收藏  举报