zoukankan      html  css  js  c++  java
  • [翻译] ASP.NET Core在.NET 5预览7中的更新

    原文:ASP.NET Core Updates in .NET 5 Preview 7
    作者:Sourabh
    时间:2020年7月21日

    .NET 5预览7现在可以使用了并进行评估了。 这是此版本中的新功能:

    • Blazor WebAssembly应用程序现在可以使用.NET 5开发
    • 更新了Blazor WebAssembly的调试要求
    • Blazor的可访问性改进
    • Blazor的性能改进
    • 证书认证性能改进
    • 发送HTTP / 2 PING帧
    • 支持Kestrel套接字传输中的其他终结点类型
    • Kestrel中的自定义标头解码
    • 其它小改进

    入门

    要在.NET 5预览7中开始使用ASP.NET Core,请安装.NET 5 SDK

    您需要使用Visual Studio 2019 16.7预览5或更高版本才能使用.NET 5预览7.Visual Studio for Mac最新预览版也开始支持.NET 5。 要将.NET 5与Visual Studio Code一起使用,请安装最新版本的C#扩展

    升级现有项目

    要将现有的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><RazorLangVersion>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(net5.0)为目标,并且可以访问更广泛的API集。在.NET 5中实现对API的Blazor WebAssembly支持正在进行中,因此某些API可能会在运行时引发PlatformNotSupportedException。如果您因缺乏对特定API的支持而受阻,我们很乐意收到您的反馈信息。

    更新了Blazor WebAssembly的调试要求

    要在Visual Studio Code中启用Blazor WebAssembly应用程序的调试,您以前需要安装JavaScript 调试器(Nightly)扩展。由于JavaScript调试器扩展现已作为VS Code的一部分提供,因此不再需要此功能。如果您以前安装过(夜间)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流)时,此功能特别有用。通过在KestrelServerOptions上设置限制,我们增加了在Kestrel中发送定期PING帧的功能。

    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套接字传输中的其他终结点类型

    System.Net.Sockets中引入的新API的基础上,Kestrel中的套接字传输(默认)现在允许您绑定到现有文件句柄和Unix域套接字。 支持绑定到现有文件句柄,从而可以使用现有的Systemd集成,而无需使用libuv传输。

    Kestrel中的自定义标头解码

    我们添加了根据标题名称而不是默认为UTF-8来指定使用哪个System.Text.Encoding解释传入的标题的功能。 您可以在KestrelServerOptions上设置RequestHeaderEncodingSelector属性,以指定要使用的编码。

    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>();
            });
    

    其它改进

    • 现在可以将CompareAttribute应用于Razor Page模型上的属性。
    • 默认情况下,从主体绑定的参数和属性被认为是必需的。
    • 我们已开始将可为空的注释应用于ASP.NET Core程序集。 我们打算在.NET 5发布期间对框架的大多数常见公共API表面进行注释。
    • 现在,使用端点路由时的授权将接收HttpContext而不是端点实例。 这允许授权中间件访问RouteDataHttpContext的其他属性,这些属性无法通过Endpoint类访问。 可以使用context.GetEndpoint()从上下文中获取端点。
    • System.Diagnostics.Activity的默认格式现在默认为W3C格式。 默认情况下,这使得ASP.NET Core中的分布式跟踪支持可与更多框架互操作。
    • FromBodyAttribute现在支持配置一个选项,该选项允许将这些参数或属性视为可选的:
    public IActionResult Post([FromBody(EmptyBodyBehavior = EmptyBodyBehavior.Allow)] MyModel model) { ... }
    

    给予反馈

    我们希望您喜欢.NET 5中此版本的ASP.NET Core! 我们很想听听您有关此最新.NET 5版本的经验。 通过在GitHub上提交问题,让我们知道您的想法。

    感谢您试用ASP.NET Core!

  • 相关阅读:
    华为交换机配置和NTP服务器同步时间
    华为交换机常用查询命令
    Linux在线添加新磁盘
    华为交换机堆叠配置
    Linux-Centos安装nginx–解压版安装
    Linux修改为国内yum源
    pipenv的使用
    使用阿里云语音合成产品,从页面获取它的voice参数列表数据
    使用【Sonatype Nexus Repository Manager】搭建内部NPM源
    Vue3.0 项目中使用事件总线
  • 原文地址:https://www.cnblogs.com/richardcuick/p/13364408.html
Copyright © 2011-2022 走看看