|
这个话题说来话长,有一次小白去面试,自高奋勇的聊到他使用过.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各个版本特性
.NET6(长期支持版本)
新特性:
- 性能大幅提升
- 支持热更新 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)
.NET5
新特性:
- http://ASP.NET Core MVC 和 Razor 改进
- OpenAPI 规范默认开启
- Blazor 性能改进、增加组件
- gRPC 性能改进
- SignalR 增加 Hub Filter,类似于 MVC Filter。支持并行调用,允许客户端一次调用多个Hub方法
- 自定义处理授权失败,使用由
- 授权中间件调用的新 IAuthorizationMiddlewareResultHandler 接口可以更轻松地自定义处理授权失败
- 使用端点路由时的授权
- Linux 上的 Kerberos 身份验证和 LDAP 的基于角色的访问控制
- 对 http://ASP.NET Core 项目运行
- dotnet watch 将启动默认浏览器,并在对代码进行更改时自动刷新浏览器
- 控制台记录器格式化程序
- JSON Console Logger
.NET Core 3.1(长期支持版本)
新特性包含3.0新特性如下:
- Blazor Server
- Blazor WebAssembly
- Razor 组件
- gRPC
- http://ASP.NET Core 和 SignalR 默认使用 System.Text.Json 来进行序列化
- http://ASP.NET Core 默认不再使用 WebHostBuilder ,而是使用 HostBuilder(可以更好地将 http://ASP.NET Core 应用与非 Web 特定的其他服务器方案集成)
- Startup 类构造方法注入类型更改,只支持:IHostEnvironment,IWebHostEnvironment,IConfiguration
- 默认情况下启用 HTTP/2
- Kestrel:默认情况下禁用
.NETCore 2.2
新特性包含2.0、2.1,新特性如下:
- Razor Pages
- http://ASP.NET Core 元包(注:即Microsoft.AspNetCore.All ,我喜欢称作全家桶,作用就是一把梭给你全部引用了相关的包,不用你发现没有的时候自己去找,方便是方便,就是把一堆没用到的也给引用了,项目加载速度也会受到影响)
- .NET Standard 2.0
- SPA 模板
- Kestrel 改进(添加大量服务器约束配置选项)
- WebListener 重命名为 HTTP.sys
- 默认启用防跨站请求攻击(CSRF)
- SignalR(已针对 http://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 改进
- 响应压缩(http://ASP.NET Core 2.2 可以使用 Brotli 压缩格式来压缩响应。)
- 提升 HttpClient 性能(通过改善连接池锁的冲突)
.NETCore 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的优点。希望本文对大家有所收获,同时欢迎大家留言和提出异议。
参考:微软官方文档
版权声明:本文来源于网友收集或网友提供,仅供学习交流之用,如果有侵权,请转告版主或者留言,本公众号立即删除。
关注:DotNet开发跳槽觉得不错,请点个在看呀 |
|