一言以蔽之,.NET Core 是运行平台(platform),.NET Standard 是一系列编程接口(a set of APIs).
.NET Core
.NET 的世界里, 原来只有. NET Framework..NET 是托管代码, 通用语言运行时 (Common Language Runtime,CLR) 在程序运行时将 IL 代码转换成机器码. 从 2002 年开始的 1.0 版, 到现在最新的 4.7 版本, 基于. NET Framework 编译出的程序跑在 Windows 上的居多. 为什么呢? 因为官方的 CLR 只支持 Windows. 那以前 Linux 上可不可以跑. NET Framework 的程序呢? 也可以, 用 Mono https://www.mono-project.com/ .Mono 根据 C# 和 CLR 的 ECMA 标准实现了一份 Linux 下的 CLR, 比如说, Linux 里没有注册表的概念, Mono 用一个. ini 文件来模拟注册表.
在微软拥抱开源之后,.NET Core 应运而生..NET Core 是一个跨平台的. NET 运行平台, 完全开源( https://github.com/dotnet/core ), 支持 Windows,macOS 和 Linux, 跨架构(x86,x64,ARM). 最新的
2.1
版本还支持 Raspberry Pi 2+ https://learn.adafruit.com/category/raspberry-pi .
最有趣的一点是,.NET Core 可以被包含在应用程序中, x-copy 就可以发布, 可以在 Docker 容器 https://docs.microsoft.com/en-us/dotnet/core/docker/index 中使用.
开源的运行时
CoreCLR https://github.com/dotnet/coreclr 就是. NET Core 的运行时 CLR, 包括垃圾回收, JIT 编译器,.NET 的基本数据类型以及其他的底层类型.
开源的基本程序库
CoreFX https://github.com/dotnet/corefx 里包含了. NET Core 的最最基本的程序库, 比如集合 System.Collections, 文件处理
System.IO.FileSystem
, 命令行 System.Console, 多线程 async 支持等. 这些程序库都可以通过 NuGet https://nuget.org/ 按需下载.
冷知识: FX 是 Framework 的缩写
性能
值得一提的是. NET Core 里的性能提升..NET Core 团队在性能上做了很多优化工作, Performance Improvements in .NET Core https://blogs.msdn.microsoft.com/dotnet/2017/06/07/performance-improvements-in-net-core/ 详细介绍了一些基础类型和运行时里的优化. ASP.NET Core 框架搭建在. NET Core 之上, ASP.NET Core 在. NET Core 的基础上还做了一些自己的优化, 比如 System.IO.Pipeline https://blogs.msdn.microsoft.com/dotnet/2018/07/09/system-io-pipelines-high-performance-io-in-net/ , 非常有趣, 我们以后再聊. 第三方性能测试平台 https://www.techempower.com/benchmarks/#section=data-r15&hw=ph&test=plaintext 最新结果显示 ASP.NET Core 排名 17, 超过 go 与 nodejs.
.NET Standard
.NET Standard https://github.com/dotnet/standard , 顾名思义, 是一个标准. 意思是说, 所有. NET 平台, 必须要支持这个. NET Standard 里定义的 API. 比如说
System.IO.FileSystem
,Linux 下的. NET Core 就必须理解 Linux 平台下的文件系统并且实现 Linux 下的文件读写功能. 跑在 Windows 下的. NET Core 或者. NET Framework 也必须实现一份 Windows 下的文件读写功能.
最新的 .NET Standard 已到 2.0 版本. 下表列了支持 2.0 版 .NET Standard 的最低. NET 平台版本. 可以看到,.NET Core 只是众多平台中的一个.
.Net Standard | 2.0 |
---|---|
.NET Core | 2.0 |
.NET Framework | 4.6.1 |
Mono | 5.4 |
Xamarin.iOS | 10.14 |
Xamarin.Mac | 3.8 |
Xamarin.Android | 8.0 |
Universal Windows Platform | 10.0.16299 |
参考文献
[1] About .NET Core https://docs.microsoft.com/en-us/dotnet/core/docker/index
[2] .NET Standard https://docs.microsoft.com/en-us/dotnet/standard/net-standard
[3] Performance Improvements in .NET Core https://blogs.msdn.microsoft.com/dotnet/2017/06/07/performance-improvements-in-net-core/
[4] Andrew Lock, Understanding .NET Core, NETStandard, .NET Core applications and ASP.NET Core https://andrewlock.net/understanding-net-core-netstandard-and-asp-net-core/
[5] Announcing .NET Core 2.1 https://blogs.msdn.microsoft.com/dotnet/2018/05/30/announcing-net-core-2-1/
来源: http://www.bubuko.com/infodetail-2725834.html