.Net Core的总结
一、什么是.NET Core
.NET Core是一个开源通用的开发框架,支持跨平台,即支持在Window,macOS,Linux等系统上的开发和部署,并且可以在硬件设备,云服务,和嵌入式/物联网方案中进行使用。
.NET Core的源码放在GitHub上,由微软官方和社区共同支持。
由于.NET Core的开发目标是跨平台的.NET平台,因此.NET Core包含一些.NET Framework的类库(在.NET Core 3 .0之后,不再从.NET Framework中移植任何功能了 ),但与 .NET Framework不同的是.NET Core采用包化 (Packages) 的管理方式,应用程序只需要获取需要的组件即可,如果是之前封装的dll则需要打包,打包方式:在nuget包管理控制台执行: dotnet pack,将生成的.nupkg文件拷贝到包目录中,安装一下,就完成了打包的过程。。
二、为什么要了解.NET Core
如果你现在是一名.NET开发人员,或者你正在学习.NET,又或者你以后打算从事.NET方向的开发工作,那么.NET Core 是必不可少,也可以说是必须的一项技能。
.NET Core 是 .NET 的未来,它也是.NET发展中的一个重大转折,而且 .NET Core已经出现在了很多.NET岗位的招聘需求上,这也说明了.Net Core逐渐发展成熟。
三、.NET Core 特性
1、跨平台
可以在 Windows、macOS 和 Linux 操作系统上运行。
2、跨架构
在多个架构(包括 x64、x86 和 ARM)上以相同的行为运行代码。
3、支持命令行
包括用于本地开发和持续集成方案中的易于使用的命令行工具。
4、部署灵活
可以包含在独立应用、用户环境或者计算机环境中(比如对于Windows系统来说,IIS、windows服务和控制台),也可搭配 Docker 容器使用。
5、兼容性强
.NET Core通过 .NET Standard与 .NET Framework、Xamarin(跨平台开发框架,目标是 用C#开发iOS、Android和Windows Phone原生应用程序)和Mono(一个致力于开创.NET在Linux上使用的开源工程) 兼容。
6、开源
.NET Core是一个开放源平台,使用MIT开源协议和Apache 2许可证。
四、与.NET Framework关系
.NET Core & .NET Framework 都是 .NET Standard Library 的实现,前者是跨平台,而后者是Windows下特有的,除了实现 .NET Standard Library外 .NET Core 和 .NET Framework 都有各自特有的实现。
对于.Net Core来说,.NET Standard Library 是跨操作系统的关键所在,它定义了一组接口,而每个操作系统有各自的实现,.NET Core通过nuget可以动态下载当前操作系统的实现,从而实现跨操作系统。
从未来发展的角度来看,.NET Core 是 .NET Framework 的下一代产品,目前 .NET Framework 还在 4.8 版本,.NET Core 是 3.1 版本。微软已经宣布,.NET Core 3.1 的下个版本就是 .NET 5,也就是说.NET 5是.NET Core的下一版本。
.Net Framework 和 .Net Core 的架构图


五、.NET Core 发展路线
.NET Core是由Microsoft开发,目前在.NET Foundation(一个非营利的开源组织)下进行管理。.NET Core是用C#和C++编写的,并采用MIT协议作为开源协议。第一个版本的.NET Core 1.0是在2016年发布的,功能有限。NET Core 2.0于2017年8月14日发布。在这个版本中发布的两个核心框架是ASP.NET Core2.0和 Entity Framework Core 2.0。下一个稳定版本.NET Core 2.1和2.2于2018年5月和12月发布。.NET Core的当前版本为3.1。
下表总结了.NET Core的主要里程碑:
|
版本 |
发布日期 |
关键特征/产品 |
|
.NET Core 1.0 |
6/27/2016 |
Visual Studio 2015 Update 3支持的.NET Core的初始版本。 |
|
.net Core 1.1.1 |
3/7/2017 |
.NET Core Tools 1.0受Visual Studio 2017支持 |
|
.NET Core 2.0 |
8/14/2017 |
Visual Studio 2017 15.3,ASP.NET Core 2.0,实体框架2.0 |
|
.NET Core 2.1 |
5/30/2018 |
ASP.NET Core 2.1,EF Core 2.1 |
|
.NET Core 2.2 |
12/4/2018 |
ASP.NET Core 2.2,EF Core 2.2 |
|
.NET Core 3.0预览3 |
3/6/2019 |
通过VisualStudio2019支持ASP.NET Core 3.0、EF Core3.0、UWP、Windows窗体、WPF |
|
.NET Core 3.1 |
19年8月 |
对3.0新增功能的优化 |
六、.NET Core 3.0 新增功能
1、C# 8.0 也是该版本的一部分,它包含可为空引用类型功能、异步流。
2、支持 WinForms 和 WPF
这是否意味着它在Linux和Mac上运行?
不!由于WinForms和WPF在后台仅使用Windows技术,因此无法在Linux或Mac上运行,它依赖于Windows。在.NET Core上运行它的意义在于提升性能并且独立于任何框架。.NET Core针对性能进行了优化,因此您可以在云中运行超快的Web应用程序。.NET Core也独立于计算机上安装的框架。只需将运行时与应用程序一起部署即可。
3、ASP.NET Core 3.0
4、EF Core 3.0
5、.NET Core 是在云原生背景下诞生一个开发平台,而在.NET Core 3.0 更加完善,具体内容:
- 体积更小:对于微服务分布式架构而言,更小的体积意味着更少的下载带宽,更快的分发下载速度,.NET Core 的镜像体积都很小。
- 启动速度更快:对于传统单体应用,启动速度与运行效率相比不是一个关键的指标。原因是,这些应用重启和发布频率相对较低。然而对于需要快速迭代、水平扩展的微服务应用而言,更快的的启动速度就意味着更高的交付效率,和更加快速的回滚。尤其当你需要发布一个有数百个副本的应用时,缓慢的启动速度就是时间杀手。对于 Serverless 应用而言,端到端的冷启动速度则更为关键,即使底层容器技术可以实现百毫秒资源就绪,如果应用无法在 500ms 内完成启动,用户就会感知到访问延迟。
- 占用资源更少:运行时更低的资源占用,意味着更高的部署密度和更低的计算成本。.NET Core的 CLR启动速度非常快,降低启动时资源消耗,可以减少资源争抢。
- 支持水平扩展:.NET Core 3.0 更好的支持Docker资源限制,官方团队也在努力让.NET Core成为真正的容器运行时,使其在低内存环境中具有容器感知功能并高效运行。随着内存成本的下降和虚拟化的流行,大内存配比已经成为趋势。所以我们一般是采用水平扩展的方式,同时部署多个应用副本,在一个计算节点中可能运行一个应用的多个副本来提升资源利用率。
.NET Core 3.0 是快速的。与.NET Framework和.NET Core 2.2及以前的版本相比,.NET Core 3.0的速度很快。.NET Core比其他服务器端框架(如Java Servlet和Node.js)快得多。

七、.NET Core 3.1 变化
.NET Core 3.1 中的更改主要集中在 Blazor 和 Windows Desktop,这是 .NET Core 3.0 中的两个新增特性
(Blazor是一个WebUI框架,可通过WebAssembly在任意浏览器中运行.Net.)
NET Core 3.1要求Visual Studio 2019 16.4才能充分利用其所有功能。.NET Core 3.1在早期版本的Visual Studio中将无法正常工作。
八、.NET Core构建哪些类型的应用程序
.NET Core是一个通用的软件开发框架。它允许开发人员构建各种软件,包括Web,桌面,移动,云,游戏,物联网等。与其他框架不同,.NET Core并不局限于单一的编程语言,它支持C#、VB.NET、F#、XAML和TypeScript。

.NET Core更适合跨平台需求。.NET Core应用程序支持在Windows,Linux和macOS上运行。Linux和macOS上也都支持Microsoft流行的开源代码编辑器Visual Studio Code。VS Code支持代码编辑器的现代需求,包括智能提醒和调试。大多数第三方编辑器(如Sublime,Emacs和VI)都支持.NET Core。
.Net Core的总结的更多相关文章
- ASP.NET Core 之 Identity 入门(一)
前言 在 ASP.NET Core 中,仍然沿用了 ASP.NET里面的 Identity 组件库,负责对用户的身份进行认证,总体来说的话,没有MVC 5 里面那么复杂,因为在MVC 5里面引入了OW ...
- .NET Core中的认证管理解析
.NET Core中的认证管理解析 0x00 问题来源 在新建.NET Core的Web项目时选择“使用个人用户账户”就可以创建一个带有用户和权限管理的项目,已经准备好了用户注册.登录等很多页面,也可 ...
- ASP.NET Core 中的那些认证中间件及一些重要知识点
前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...
- .Net Core MVC 网站开发(Ninesky) 2.4、添加栏目与异步方法
在2.3中完成依赖注入后,这次主要实现栏目的添加功能.按照前面思路栏目有三种类型,常规栏目即可以添加子栏目也可以选择是否添加内容,内容又可以分文章或其他类型,所以还要添加一个模块功能.这次主要实现栏目 ...
- ASP.NET Core应用的错误处理[3]:ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面”
DeveloperExceptionPageMiddleware中间件利用呈现出来的错误页面实现抛出异常和当前请求的详细信息以辅助开发人员更好地进行纠错诊断工作,而ExceptionHandlerMi ...
- EntityFramework Core Raw SQL
前言 本节我们来讲讲EF Core中的原始查询,目前在项目中对于简单的查询直接通过EF就可以解决,但是涉及到多表查询时为了一步到位就采用了原始查询的方式进行.下面我们一起来看看. EntityFram ...
- ASP.NET Core MVC/WebAPi 模型绑定探索
前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...
- ASP.NET Core应用的错误处理[2]:DeveloperExceptionPageMiddleware中间件如何呈现“开发者异常页面”
在<ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式>中,我们通过几个简单的实例演示了如何呈现一个错误页面,这些错误页面的呈现分别由三个对应的中间件来完成,接下来我们将 ...
- Asp.net Core中使用Session
前言 2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Cor ...
- ASP.NET Core 中文文档 第四章 MVC(3.8)视图中的依赖注入
原文:Dependency injection into views 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:孟帅洋(书缘) ASP.NET Core 支持在视图中使用 依赖 ...
随机推荐
- Docker Compose 模板文件 V2
模板文件是使用Compose的核心,默认模板文件名称为docker-compose.yml ,格式为YAML格式. 目录结构 [root@localhost ~]# tree /opt/compose ...
- Web渗透测试漏洞手册及修复建议
Web渗透测试漏洞手册及修复建议 0x0 配置管理 0x01 HTTP方法测试 漏洞介绍: 目标服务器启用了不安全的传输方法,如PUT.DELETE等,这些方法表示可能在服务器上使用了 WebDAV, ...
- CSS中元素的显示模式
在CSS中,根据元素显示模式的不同元素标签被分为了两类:行内元素(inline-level).块级元素(block-level). 1,首先介绍什么是行内元素,什么又是块级元素? 1.1,行内元素就 ...
- RX.js6变化
RX.js变化 RxJS 6主要用于Angular应用程序,从Angular 6开始,它是一个强制依赖. 与RxJS版本5相比,RxJS 6(或更高版本)引入了两个重要更改: 1. import的导入 ...
- Cesium案例解析(六)——3DTilesInspector监视器
目录 1. 概述 2. 案例 1. 概述 3D Tiles作为传输和渲染大规模3D地理空间数据的格式,应对的都是大规模数据的场景,Cesium提供了一个监视3D Tiles数据的监视器,可以通过这个监 ...
- pip 自己的源 搭建
1 安装工具 pip install pip2pi 2 下载 所需要的包 pip2tgz /application/nginx/html/yum/python/ apscheduler (172 ...
- jmeter请求参数的两种方式
Jmeter做接口测试,Body与Parameters的选取 1.普通的post请求和上传接口,选择Parameters. 2.json和xml请求接口,选择Body. 注意: 在做接口测试时注意下请 ...
- badboy录制,出现弹框提示脚本错误解决方法
录制的时候经常出现如下问题: 结合网上一些资料,发现如下设置可以解决,具体原理不太清楚,但能达到效果(后期探究一下是为什么,如有知道的朋友,请赐教)
- Unity比较常用的数据类型
几种常见数据结构的使用情景 Array需要处理的元素数量确定并且需要使用下标时可以考虑,不过建议使用List<T> ArrayList不推荐使用,建议用List<T> List ...
- P2813 母舰
------------------------------------------- 链接:P2813 ------------------------------------------- 一道贪 ...