查看原文
其他

ASP.NET Core在.NET 5 Preview 7的更新

DotNet 2021-09-23

(给DotNet加星标,提升.Net技能

英文:devblogs.microsoft.com

译文:cnblogs.com/yyfh/p/13358470.html

译者:HueiFeng

.NET 5 Preview 7现在可以用了,可以进行评估了。这是此版本中的新增功能:


  • Blazor WebAssembly应用程序现在针对.NET 5


  • 更新了Blazor WebAssembly的调试要求


  • Blazor的可访问性改进


  • Blazor的性能改进


  • 证书认证性能改进


  • 发送HTTP/2 PING帧


  • 支持Kestrel套接字传输中的其他终结点类型


  • Kestrel中的自定义标头解码


  • 其他小改进


开始


要开始使用.NET 5 Preview 7中的ASP.NET Core,请安装.NET 5 SDK。


需要使用的Visual Studio 2019 16.7 PreView 5或更新的版本来使用.NET 5 Preview 7


.NET 5也支持了最新的预览的Visual Studio中的Mac。


要将.NET 5与Visual Studio Code一起使用,请安装最新版本的C# extension。


升级现有项目


要将现有的ASP.NET Core应用程序从.NET 5 Preview 6升级到.NET 5 Preview 7,请执行以下操作:


  • 将所有Microsoft.AspNetCore.* 软件包引用更新为。5.0.0-preview.7.*


  • 将所有Microsoft.Extensions.* 程序包引用更新为。5.0.0-preview.7.*


  • 更新System.Net.Http.Json包引用。5.0.0-preview.7.*


请参阅.NET 5的ASP.NET Core 中重大更改的完整列表。


升级现有的Blazor WebAssembly项目


要升级现有的Blazor WebAssembly项目,请更新以下属性:



<TargetFramework>netstandard2.1</TargetFramework>
<RazorLangVersoin>3.0</RazorLangVersion>



<TargetFramework>net5.0</TargetFramework>
<RuntimeIdentifier>browser-wasm</RuntimeIdentifier>
<UseBlazorWebAssembly>true</UseBlazorWebAssembly>


另外,请删除对的所有包引用,因为不再需要它。

Microsoft.AspNetCore.Components.WebAssembly.Build


什么是新的?


Blazor WebAssembly应用程序现在针对.NET 5


Blazor WebAssembly 3.2应用程序只能访问.NET Standard 2.1 API集。


在此版本中,Blazor WebAssembly项目现在以.NET 5为目标,并且可以访问更广泛的API集。


在.NET 5中实现对API的Blazor WebAssembly支持正在进行中,因此某些API可能会在运行时抛出。


更新了Blazor WebAssembly的调试要求


要在Visual Studio Code中启用Blazor WebAssembly应用程序的调试,以前需要安装JavaScript Debugger(Nightly)扩展程序。


不再需要这样做,因为JavaScript调试器扩展现已作为VS Code的一部分提供。


如果先前已安装(Nightly)JavaScript调试器扩展,则可以将其卸载。


仍然需要通过Visual Studio Code设置启用JavaScript调试器的预览版。


Blazor的可访问性改进


从InputBase现在开始派生的内置Blazor输入组件会在验证失败时自动呈现aria-invalid


Blazor的性能改进


.NET 5中Blazor WebAssembly的主要投资领域之一是提高运行时性能。这是一个多方面的努力。以下是一些需要优化的高级区域:


  • .NET运行时执行


  • JSON序列化


  • JavaScript互操作


  • Blazor组件渲染


不断改进.NET 5的Blazor WebAssembly运行时性能。


此版本包含一些初步的性能改进,我们希望在以后的.NET 5更新中共享有关此性能工作结果的更多详细信息。


证书认证性能改进


我们在ASP.NET Core中为证书身份验证添加了缓存。缓存证书验证可以大大提高证书验证的性能。我们的基准测试显示,启用缓存后,每秒请求的速度提高了400%。


无需对应用程序进行任何更改即可利用性能改进。


默认情况下,缓存处于打开状态。如果愿意,有一些选项可以调整或禁用缓存。


在文档中找到有关ASP.NET Core 中的证书身份验证的更多信息。


发送HTTP/2 PING帧


HTTP / 2具有用于发送PING帧的机制,以确保空闲连接是否仍然有效。当使用长期闲置但只能间歇性地查看活动的长寿命流(例如gRPC流)时,此功能特别有用。通过在上设置限制,我们增加了在Kestrel中发送定期PING帧的功能KestrelServerOptions。


public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureKestrel(options =>
{
options.Limits.Http2.KeepAlivePingInterval = TimeSpan.FromSeconds(10);
options.Limits.Http2.KeepAlivePingTimeout = TimeSpan.FromSeconds(1);
});
webBuilder.UseStartup<Startup>();
});


支持Kestrel套接字传输中的其他终结点类型


在Kestrel中引入的新API的基础上,Kestrel中的套接字传输(默认)现在允许绑定到现有文件句柄和Unix域套接字。


支持绑定到现有文件句柄,从而可以使用现有的Systemd集成,而无需使用libuv传输。System.Net.Sockets


Kestrel中的自定义标头解码


我们添加了根据标题名称指定用于解释传入标题的功能,而不是默认使用UTF-8。


可以将属性设置为on,以指定要使用的编码。


System.Text.Encoding RequestHeaderEncodingSelector KestrelServerOptions


public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureKestrel(options =>
{
options.RequestHeaderEncodingSelector = encoding =>
{
switch (encoding)
{
case "Host":
return System.Text.Encoding.Latin1;
default:
return System.Text.Encoding.UTF8;
}
};
});
webBuilder.UseStartup<Startup>();
});


其他改进


  • 对于预览版7,我们已开始将可为空的注释应用于ASP.NET Core程序集。我们打算在5.0版本期间对框架的大多数常见公共API表面进行注释。


  • CompareAttribute 现在可以应用于“Razor Page”模型上的属性。


  • 默认情况下,从主体绑定的参数和属性被认为是必需的。


  • 我们已经开始将可为空的注释应用于ASP.NET Core程序集。我们打算在.NET 5发布期间对框架的大多数常见公共API表面进行注释。


  • 现在使用端点路由时的授权将接收HttpContext而不是端点实例。这允许授权中间件访问通过类无法访问的RouteData和属性。可以使用从上下文中获取端点。HttpContext Endpoint context.GetEndpoint() 


  • 现在的默认格式默认为W3C格式。默认情况下,这使得ASP.NET Core中的分布式跟踪支持可与更多框架互操作。System.Diagnostics.Activity


  • CompareAttribute 现在可以应用于“Razor Page”模型上的属性。


  • FromBodyAttribute 现在支持配置允许将这些参数或属性视为可选的选项:

    C# public IActionResult Post([FromBody(EmptyBodyBehavior = EmptyBodyBehavior.Allow)] MyModel model) { ... }


总结


希望喜欢.NET 5中此版本的ASP.NET Core!


原文:https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-5-preview-7/


- EOF -



推荐阅读  点击标题可跳转
微服务 - 服务之间的通信gRPC.NET 微服务实战之负载均衡(上).NET Core+Nginx实现项目负载均衡


看完本文有收获?请转发分享给更多人

关注「DotNet」加星标,提升.Net技能 

好文章,我在看❤️

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存