.NET平台系列5 .NET Core 简介
自1995年互联网战略日以来最雄心勃勃的事业 —— 微软.NET战略, 2000年6月30日。
微软公司于2002年2月13日正式推出第一代.NET平台 .NET Framewrok 1.0。借助于自家强大易用的 Windows 系统,.NET Framework1.0 主要提供了面向 Windows 桌面(Windows Form)和服务器(ASP.NET Web Forms)的基础开发框架。在宇宙第一IDE(Visual Studio)中使用这两款框架进行业务系统开发,框架中都提供了功能强大的控件、组件,开发者通过可视化编程方式进行开发就非常容易上手,而且开发速度非常快,因此.NET平台深受全世界开发者的喜爱,发展一路顺风顺水。
在.NET(旧称.NET Framework )发展过程中,其最大的竞争对手就是Java。Java是主打敏捷开发、跨平台的编程语言,自1995年推出Java正式版以来,凭借其天生的跨平台(Windows、Linux、MacOS)优势,发展至今在全世界开发者市场与生态圈层面远远超过.NET平台。.NET Framework 与 Windows 平台深度绑定,无法做到跨平台,所以一直处于被Java压制的状态。
互联网技术飞速发展至今,传统的桌面程序与Web应用已无法满足各行各业的多场景应用需求。云计算、人工智能、大数据以及云原生等新兴技术方向在现代IT时代掀起了一波又一波浪潮。传统的 .NET Framework 技术极大地限制了.NET平台的应用范围与发展,面对如此尴尬的局面与现状,微软审时度势,于2014年推出跨平台解决方案.NET Core。

2014年11月12日,微软ASP.NET之父Scott Guthrie 在 Connect 全球开发者在线会议上宣布,微软将开源全部的.NET Core 运行时,并将.NET 扩展为可在Linux和maxOS平台上开发与运行,从而让.NET应用实现跨平台。
dotnet/runtime 开源地址:https://github.com/dotnet/runtime
dotnet/core 发行日志: https://github.com/dotnet/core/tree/main/release-notes
.NET Core 的推出是微软.NET技术发展史上又一个重要里程碑。.NET Core是.NET技术的重要变革,它将全世界.NET开发者带入一个全新的开发领域。
.NET Core is a free, cross-platform, open-source developer platform for building many different types of applications. 这是微软官方给出的定义:.NET Core是一个免费、跨平台、开源的开发平台,用于构建许多不同类型的应用程序。
.NET Core 设计目标有包含:
- 支持或可以移转 (port) 到更多的操作系统平台与芯片架构 (未来项目会跨出 x86 平台。目前已至此x64、arm)。
- 具有引人注目的性能与高可靠度。
- 开发人员能快速与直接的获取 .NET Core 开发环境。
- 在直觉与具生产力的情况下建造应用程序,使用文件,示例与 NuGet 组件。

.NET Core 是由许多项目所组成,除了基本的类库(Core FX) 之外,也包含采用 RyuJIT 编译的运行平台 Core CLR、编译器平台.NET Compiler Platform、采用 AOT 编译技术运行最优化的包 Core RT (.NET Core Runtime),以及跨平台的 MSIL 编译器 LLILC (LLVM-based MSIL Compiler) 等项目。
同时,微软也发展了一个建置技术文件的平台docfx, 并运用于 .NET Core 的文件网站。
- Roslyn
.NET Compiler Platform (项目代码为 Roslyn) 是将 .NET平台的编译架构标准化的平台,它可提供程序管理工具 (如集成开发环境) 相当多的情报,用以发展有助于编写程序与管理程序结构所需要的功能,例如类型信息、语法结构、参考链接、语义、编译器、自动化、错误回报等等功能,只要是遵循 CLI 标准的编程语言,都可以利用 .NET Compiler Platform 实现出编译器,让程序管理工具能实现如语法提示、语法自动完成、关键字高亮等可视化能力。
.NET Compiler Platform 可同时支持 .NET Framework 4.6 以上版本,.NET Core 也原生支持。
- RyuJIT
RyuJIT 是微软发展的新式即时编译器 (Just-in-Time Compiler),用以替换现有的 .NET Framework 的 JIT 以及 JIT64 即地编译器,依据微软公布的测试报告,RyuJIT 的性能较前一代的 JIT 提升约 25%,并支持SIMD(Single Instruction, Multiple Data) 的技术。RyuJIT 同时应用于 .NET Framework 4.6 以及 .NET Core 。
- Core CLR
Core CLR 移植 .NET Framework 的 CLR 的功能,包含核心程序库 mscorlib、JIT 编译器、垃圾收集器 (GC) 以及其他运行 MSIL 所需要的运行期环境。
- Core RT
Core RT 是以AOT (Ahead-of-time) 编译方式为主的核心功能,在 .NET Core 内称为 Core RT,在 UWP 则是称为 .NET Native。
Core RT 会在建造时期 (非运行期) 在编译时将 MSIL 转换成平台本地的机器码,以获取较短的引导时间 (JIT 采用的是运行时期编译,使得引导时间拉长),以及内存用量减少的优点。Core RT 会在不同的平台使用不同的 AOT 技术:
· Windows 上使用的是 .NET Native。
· macOS 与 Linux 上使用的是 LLILC (同时支持 JIT 和 AOT)。
- LLILC
LLILC (LLVM-based MSILCompiler,英文发音为 "lilac") 是 .NET Core 在非 Windows 平台的 MSIL 编译器 ,基于 ECMA-335 (Common Language Infrastructure) 的标准将 MSIL 编译成原生码运行,适用于可运行 LLVM 的操作系统,例如 macOS与 Linux 操作系统。LLILC 同时支持 JIT (内含 RyuJIT 的实现) 以及 AOT (未来将开始支持) 的编译方式。
- CoreFX(.NET Core Libraries)
CoreFX主要包含数个公共库,例如 System.Collections, System.IO, System.Xml等。CoreFX是 .NET Standard Library 的实现,同样的.NET Framework 4.6.3也是基于.NET Standard Library的实现。它们目前都是基于.NET Standard Library1.6版本,具体见下表:

开源地址:https://github.com/dotnet/corefxlab
.NET Core 的类库采用 NuGet 包化的架构,应用程序只需要使用 project.json 的 dependencies 区块加入指定包版本的参考,就能获得该包的功能,与以往 .NET Framework 大包式的提供方法完全不同。.NET Core 团队宣布己经有 98% 的 .NET Framework 主要类库移转到 .NET Core 平台。
- Microsoft.DotNet.CoreHost
- NETStandard.Platform
- System.Collections.Concurrent
- System.Linq
- System.Runtime.Numerics
- System.Text.RegularExpressions
- Microsoft.NETCore.Platforms
- Microsoft.NETCore.Runtime
- Microsoft.Win32.Primitives
- System.AppContext
- System.Collections
- System.Diagnostics.Debug
- System.Diagnostics.Tools
- System.Diagnostics.Tracing
- System.Globalization
- System.Globalization.Calendars
- System.IO
- System.IO.FileSystem
- System.IO.FileSystem.Primitives
- System.Net.Primitives
- System.Net.Sockets
- System.Reflection
- System.Reflection.Extensions
- System.Reflection.Primitives
- System.Reflection.TypeExtensions
- System.Runtime
- System.Runtime.Extensions
- System.Runtime.Handles
- System.Runtime.InteropServices
- System.Runtime.InteropServices.RuntimeInformation
- System.Text.Encoding
- System.Text.Encoding.Extensions
- System.Threading
- System.Threading.Tasks
- System.Threading.Timer
.NET Core 基于跨平台能力,并没有将与 GUI 高度相关的 API 移植到 .NET Core 内,因此像是Windows Forms或是Windows Presentation Foundation(WPF) 并未移植到 .NET Core。.NET Core 支持控制台应用程序 (Console Application) 以及类库 (Class Library) 类型的项目。
不过微软在其Universal Windows Platform(UWP) 开发平台使用了 .NET Core ,并且利用 .NET Native 技术将其性能提升至十分接近原生码的速度。
ASP.NET Core 则以控制台应用程序驱动其托管环境 Kestrel Server 以支持 ASP.NET Core 程序的运行。
.NET CLI (Command-Line Interface) 指令列工具是 .NET Core 处理建造、运行与编辑工作的主要工具 ,有几个主要的动作:
|
指令
|
帮助
|
|---|---|
|
dotnet new
|
产生新的基本 .NET 项目内容 (包含 project.json、Program.cs 以及 NuGet.config)
|
|
dotnet restore
|
还原所参考的 NuGet 包
|
|
dotnet build
|
建造 .NET 项目
|
|
dotnet publish
|
产生可发行的 .NET 项目 (包含所属的 Runtime)
|
|
dotnet run
|
编译与立即运行 .NET 项目 (较适用于 exe 型项目)
|
|
dotnet repl
|
引导交互式的对话
|
|
dotnet pack
|
将项目的产出封装成 NuGet 包
|
提示:命令都是神一般的存在,我们凡人还是使用 Visual Studio 进行开发、编译、发布,效率最高。
.NET Core 经常会拿来与其他平台做类比,尤其是它的源头 .NET Framework 以及另一个相似性质的开源平台 Mono。
下表列出了当前支持的 .NET 版本以及支持它们的 Windows 版本。 这些版本在 .NET 版本达到支持终止日期或 Windows 版本达到生命周期之前仍受支持。
Windows 10 版本终止服务日期按版本分段。 下表中仅考虑家庭版、专业版、专业教育版和专业工作站版。 查看 Windows 生命周期事实表单,了解具体的详细信息。
- 在 Windows 上安装 .NET (参考:https://docs.microsoft.com/zh-cn/dotnet/core/install/windows?tabs=net50)
- 支持的版本

- 不支持的版本
以下 .NET 版本 不再受到支持:

- 在 macOS 上安装 .NET(参考:https://docs.microsoft.com/zh-cn/dotnet/core/install/macos)
- 在 Linux 上安装 .NET (参考:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux)

.NET Core/.NET6 平台目前支持7大应用方向:桌面应用、Web、游戏、移动APP、云计算、AI + IOT、大数据。
参考链接
【1】https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md
【2】https://github.com/dotnet/corefx
【3】https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/glossary.md
【4】https://www.microsoft.com/net/core#windows
【5】https://msdn.microsoft.com/en-us/library/dn807190(v=vs.110).aspx
【6】https://blogs.msdn.microsoft.com/dotnet/2013/09/30/ryujit-the-next-generation-jit-compiler-for-net/
.NET平台系列5 .NET Core 简介的更多相关文章
- .NET 平台系列6 .NET Core 发展历程
系列目录 [已更新最新开发文章,点击查看详细] 在我的上一篇博客<.NET平台系列5 .NET Core 简介>中主要介绍了.NETCore的基本情况,主要包括.NET跨平台的缘由 ...
- .NET平台系列7 .NET Core 体系结构详解
系列目录 [已更新最新开发文章,点击查看详细] .NET Core 是基于.NET Framework 为基础,借鉴了其优秀的思想与强大的功能,经过重新设计与构建,实现了.NET Fram ...
- .NET平台系列9 .NET Core 3.0 / .NET Core 3.1 详解
系列目录 [已更新最新开发文章,点击查看详细] .NET Core 3.0 于 2019年9月23日发布,重点是增加对同时支持使用 Windwos Forms.WPF 和 Entity Frm ...
- .NET平台系列8 .NET Core 各版本新功能
系列目录 [已更新最新开发文章,点击查看详细] .NET Core 自2016年6月27日发布第一个正式版本以来,它主打的跨平台和高性能特效吸引了许多开发者,包括Java.PHP等语言的开发者 ...
- .NET平台系列目录
本系列主要讲解微软.NET平台发展历程以及.NET框架技术.包含.NET Framework..NET Core.Xamarin..NET Standrad等技术与应用. 1..NET平台系列 .NE ...
- .NET平台系列22:.NET Core/.NET5/.NET6 对比 .NET Framework
系列目录 [已更新最新开发文章,点击查看详细] 在我的博客<.NET平台系列2 .NET Framework 框架详解>与 <.NET平台系列7 .NET Core 体系结构 ...
- .NET平台系列23:.NET Core/.NET5/.NET6 和 .NET Framework 的选择建议
系列目录 [已更新最新开发文章,点击查看详细] 有两种支持的 .NET 实现可用于生成服务器端应用: .NET Framework .NET Core/5+,包括 .NET Core..NET ...
- ASP.NET Core系列(一): .NET Core简介及安装开发环境
大家都知道Java是跨平台的,.NET因为不具有跨平台的特性,被越来越多的开发者诟病,之前有各种间接的跨平台的方案,比如mono.但是由于各种兼容问题,最终 .NET Core出现了,它可以让程序在W ...
- [.net core]简介(转)
原文地址:https://docs.microsoft.com/zh-cn/dotnet/articles/core/ NET Core 是一个通用开发平台,由 Microsoft 和 GitHub ...
随机推荐
- Java-TreeMap和Guava-HashMultiset
一.Java-TreeMap 1.数据结构 底层数据结构是裸的红黑树,保证元素有序,没有比较器Comparator的情况按照key的自然排序,可自定义比较器.线程不安全. 可以存null,但是key不 ...
- [go-linq]-Go的.NET LINQ式查询方法
关于我 我的博客|文章首发 开发者的福音,go也支持linq了 坑爹的集合 go在进行集合操作时,有很不舒服的地方,起初我真的是无力吐槽,又苦于找不到一个好的第三方库,只能每次写着重复代码.举个栗子 ...
- ArrayList这篇就够了
提起ArrayList,相信很多小伙伴都用过,而且还不少用.但在几年之前,我在一场面试中,面试官要求说出ArrayList的扩容机制.很显然,那个时候的我并没有关注这些,从而错过了一次机会.不过好在我 ...
- OpenCV图像处理中的“机器学习"技术的使用
注意,本文中所指"机器学习"(ML)技术,特指SVM.随机森林等"传统"技术. 一.应用场景 相比较当下发展迅速的各路"端到端" ...
- 走进docker-聊聊docker网络
容器网络概念 首先了解下linux的网络构成概念 命名空间: Linux在网络栈中引入网络命名空间,将独立的网络协议栈隔离到不同的命令空间中,彼此间无法通信:Docker利用这一特性,实现不容器间的网 ...
- DAOS 分布式异步对象存储|架构设计
分布式异步对象存储 (DAOS) 是一个开源的对象存储系统,专为大规模分布式非易失性内存 (NVM, Non-Volatile Memory) 设计,利用了SCM(Storage-Class Memo ...
- [Fundamental of Power Electronics]-PART I-2.稳态变换器原理分析-2.5/2.6 多极点滤波器电压纹波估计及要点小结
2.5 含两极点低通滤波器变换器的输出电压纹波估计 在分析包含两极点低通滤波器的变换器如Cuk变换器及Buck变换器(图2.25)输出时,小纹波近似将会失效.对于这些变换器而言,无论输出滤波电容的值是 ...
- 1-Hyperledger Fabric概念详解
目录 一.Hyperledger Fabric概述 二.基本术语 1.共享账本ledger 2.通道Channel 3.组织Org 4.智能合约Chaincode 5.背书Endorse 6.各种节点 ...
- Dynamics CRM安装教程九(续):自建证书的CRM项目客户端设置CRM访问
配置完IFD之后就可以为客户端电脑配置访问CRM了首先到CA证书服务器中把证书下载下来,打开CA服务器的浏览器,输入地址http://stg-ad/certsrv/ 其中stg-ad是机器名之后点击下 ...
- k8s在线和离线批量修改镜像地址的两种方式
背景介绍 有时往k8s集群里部署一堆服务的时候,需要拷贝一堆yaml文件,当然还有其他方式部署,例如通过建立一个一个的流水线等方式,但是这太慢了,虽然是一劳永逸,但是如果说仅仅是部署一次那就可太费劲了 ...