这个话题说来话长,有一次小白去面试,自高奋勇的聊到他使用过.NET6的经历,以及.NET6和.NET5开始文件的使用比较。这时面试官问了一句,那你知道.NET 6的新特性吗?这下小白蒙了,之前看过但是忘记了,这谁记这些呢,只记得.NET6开始支持HTTP3了。面试官提问的目的是因为小白聊到.NET6的使用,而想更深入的了解小白对.NET Core各个版本的熟悉程度。这小白给自己挖了一个坑啊。这个问题很大,其实如果小白真熟悉,可以说说最新的.NET6的部分新特性,不一定全回答。接下来我们来看看.NET Core各个版本的历史和特性。
1、.NET Core发展历程
从2016年6月开始发布.NET Core 1.0 ,.NET Core已经经历过了8年,加上今年发布的.NET7 已经有7个版本了,几乎是一年一个版本。其中长期支持的版本是.NET Core 3.1和.NET 6,大家注意选择。下面是思维导图描述了他们的发展历程。
2、.NET Core各个版本特性
.NET 6 (长期支持版本)
新特性:
性能大幅提升
支持热更新 Visual Studio 2022 和 .NET CLI 中支持,适用于 C# 和 Visual Basic
支持C#10版本 ,例如记录结构、隐式使用和新的 lambda 功能
具有原生设备功能的Blazor 桌面Web应用
添加了 HTTP3支持
System.Text.Json APIs
新的 LINQ API
支持Arm64
最小化 Web APIs(Mini API)
.NET 5
新特性:
ASP.NET Core MVC 和 Razor 改进
OpenAPI 规范默认开启
Blazor 性能改进、增加组件
gRPC 性能改进
SignalR 增加 Hub Filter,类似于 MVC Filter。支持并行调用,允许客户端一次调用多个Hub方法
自定义处理授权失败,使用由
授权中间件调用的新 IAuthorizationMiddlewareResultHandler 接口可以更轻松地自定义处理授权失败
使用端点路由时的授权
Linux 上的 Kerberos 身份验证和 LDAP 的基于角色的访问控制
对 ASP.NET Core 项目运行
dotnet watch 将启动默认浏览器,并在对代码进行更改时自动刷新浏览器
控制台记录器格式化程序
JSON Console Logger
.NET Core 3.1(长期支持版本)
新特性包含3.0 新特性如下:
Blazor Server
Blazor WebAssembly
Razor 组件
gRPC
ASP.NET Core 和 SignalR 默认使用 System.Text.Json 来进行序列化
ASP.NET Core 默认不再使用 WebHostBuilder ,而是使用 HostBuilder(可以更好地将 ASP.NET Core 应用与非 Web 特定的其他服务器方案集成)
Startup 类构造方法注入类型更改,只支持:IHostEnvironment,IWebHostEnvironment,IConfiguration
默认情况下启用 HTTP/2
Kestrel:默认情况下禁用
.NET Core 2.2
新特性包含2.0、2.1, 新特性如下:
Razor Pages
ASP.NET Core 元包(注:即Microsoft.AspNetCore.All ,我喜欢称作全家桶,作用就是一把梭给你全部引用了相关的包,不用你发现没有的时候自己去找,方便是方便,就是把一堆没用到的也给引用了,项目加载速度也会受到影响)
.NET Standard 2.0
SPA 模板
Kestrel 改进(添加大量服务器约束配置选项)
WebListener 重命名为 HTTP.sys
默认启用防跨站请求攻击(CSRF)
SignalR(已针对 ASP.NET Core 2.1 重新编写 SignalR:新 JavaScript 客户端不具有 jQuery 依赖项,新紧凑型二进制协议基于 MessagePack等)
Razor 类库(Razor Class Library)
Identity UI 库
HTTPS
GDPR(注:刚出来时,很多人发现Cookie写入不了就是因为开启了它)
集成测试
[ApiController], ActionResult
端点路由(Endpoint Routing)
健康检查(HealthCheck)
HTTP/2
IIS 进程内承载
SignalR Java 客户端
CORS 改进
响应压缩(ASP.NET Core 2.2 可以使用 Brotli 压缩格式来压缩响应。)
提升 HttpClient 性能(通过改善连接池锁的冲突)
.NET Core 1.0
新特性:
URL 重写中间件
响应缓存中间件
查看组件 标记帮助程序
MVC 型中间件筛选器
基于 Cookie 的 TempData 提供程序
Azure App Service 日志记录提供程序
Azure Key Vault 配置提供程序
Azure 和 Redis 存储数据保护密钥存储库
适用于 Windows 的 WebListener 服务器(注:指 HTTP.sys 服务器)
WebSockets 支持
.NET 7
.NET 7有什么新特征呢,在今年11月份就会看到结果,我们拭目以待。
结语
本文讲述了.NET Core的发展历程和各个版本特性,大家可以参考一下,大家需要重点了解.NET5\.NET6,可能会问到。.NET Core让.NET有了跨时代的意义,比如可以跨平台运行、代码开源、模块化框架等,它不是.net framework的简单升级,而是根本性的变化;这里需要注意的是面试官会问 .NET Core相对.net framework的优点。希望本文对大家有所收获,同时欢迎大家留言和提出异议。
参考:微软官方文档
版权声明:本文来源于网友收集或网友提供,仅供学习交流之用,如果有侵权,请转告版主或者留言,本公众号立即删除。
技术群:添加小编微信并备注进群
小编微信:mm1552923 公众号:dotNet编程大全