北京时间 2020年11月11日凌晨, 微软博客.net 频道在5分钟内先后发了 《Announcing .NET 5.0》 ,《Announcing ASP.NET Core in .NET 5》 , 《Announcing the Release of EF Core 5.0》 , 以此宣布 .net 5 正式到来。
.NET 5.0 有许多重要的改进:
- .NET 5.0 已经经过了战斗测试,在 dot.net和Bing.com (版本)托管了几个月。
- 许多组件的性能得到了极大的改进,并在.NET 5.0 中的性能改进、.NET 5.0中的Arm64性能和gRPC中详细介绍了。
- C# 9 和 F# 5提供了新的语言改进,如 C# 9 的顶级程序和记录,而 F# 5 提供交互式编程和 .NET 上函数编程的性能提升。
- .NET 库增强了Json 序列化、正则表达式和HTTP 的性能(HTTP 1.1, HTTP/2)。它们现在也完全被注释为可无性。
- 由于 GC、分层编译和其他区域的改进,P95延迟已减少。
- 应用程序部署选项更好,与 ClickOnce客户端应用程序发布,单文件应用程序,减少容器映像大小,并添加服务器核心容器映像。
- 平台范围扩展与Windows Arm64和WebAssembly。
顶级语言编程
引导闪烁程序是一个很好的紧凑的顶级程序示例。
using System;
using System.Device.Gpio;
using System.Threading;
var pin = 18;
var lightTime = 1000;
var dimTime = 200;
Console.WriteLine($"Let's blink an LED!");
using GpioController controller = new ();
controller.OpenPin(pin, PinMode.Output);
Console.WriteLine($"GPIO pin enabled for use: {pin}");
// turn LED on and off
while (true)
{
Console.WriteLine($"Light for {lightTime}ms");
controller.Write(pin, PinValue.High);
Thread.Sleep(lightTime);
Console.WriteLine($"Dim for {dimTime}ms");
controller.Write(pin, PinValue.Low);
Thread.Sleep(dimTime);
}
您还可以看到目标类型 的使用,以及变量的赋值。该类型仅在赋值的左侧定义。类型在右侧推断。此新语法是 的替代方法,该类型仅显示在赋值的右侧,并在左侧用 关键字推断。new
controller
GpioController
var
var
通过定义方法和利用相同或其他文件中定义的类型,顶级程序的复杂性也会增加。CharacterLcd示例演示了其中一些功能。
EF 核心 5.0 中的功能
EF Core 的早期版本侧重于构建灵活且可扩展的体系结构。在 EF Core 3.1 中,团队通过一些重大更改和经过大修的查询管道来关闭此体系结构。3.1 的基础使团队和社区能够为 EF Core 5.0 提供一组惊人的新功能。81 大增强功能的一些亮点包括:
- 多对多关系映射
- 表每类型继承映射
- 索引属性映射索引,无需流畅的 API
- 数据库排序
- 已筛选的包括
- 简单日志记录
- 从迁移中排除表
- 拆分相关集合的查询
- 事件计数器
- 保存更改拦截和事件
- 必需 1:1 受抚养人
- 使用事务迁移脚本
- 在迁移中根据需要重建 SQLite 表
- 表值函数的映射
- DbContext 工厂支持依赖项注入
- ChangeTracker. 清除以停止跟踪所有实体
- 改进了宇宙配置
- 更改跟踪代理
- 物业袋
这些新功能是更大更改池的一部分:
Asp.Net Core 5 新增功能和改进
ASP.NET.NET 5 中的内核包含许多出色的新功能和改进。下面是一个示例:
- MVC 模型绑定改进,包括对 C# 9 记录类型的支持
- Blazor 服务器和 Blazor Web 组装支持和改进
- 内置 OpenAPI 和 Web API 的 Swagger UI 支持
- 信号器集线器滤波器和并行集线器调用
- Azure AD 身份验证与 Microsoft. 身份. Web
- 使用点网手表
自动刷新浏览器
- HTTP/2 和 gRPC 性能改进
总结
千呼万唤 .Net 5 终于来了, 有史以来第二次带来大量的性能优化, 3.x 带来了 Span<T> 和 Memory<T> 并且以此重写大量的基本库(强壮的心脏) , 现在 .Net 5 的优化集中来 RyJit 上面, 产生更少的 机器码以及改进大量标准库中的性能。 现在 .net 5 已经未 IOS 和 andorid 以及 WebAssembly 做好了准备, Blzor 的到来,我们终于可以在一个地方解决 前端和后端, 期待 Unity3d,CryEngine 等 native 游戏引擎即使支持.Net 5 (ps, 市面上已经有很多 纯.Net 游戏引擎,而他们已经为.Net5 做好了准备, 比如 stride (以前叫 Xenko) , WaveEngine 等, 不得不说 .Net 下游戏引擎实在太多了).
.Net 5 的到了,标志着.Net 全平台贯通时代的到了, 你做好准备了么?