.net 6 新特性,支持HTTP/3 端点发布

Posted webmote

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net 6 新特性,支持HTTP/3 端点发布相关的知识,希望对你有一定的参考价值。

  • 📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!
  • 📢本文作者:由webmote 原创,首发于 【掘金】
  • 📢作者格言: 生活在于折腾,当你不折腾生活时,生活就开始折腾你,让我们一起加油!💪💪💪

🎏 序言

Http3 协议构建在UDP的基础上,是的,就这么神奇,以前被誉为不稳定大神的UDP,现在承担起可靠通讯协议的底层协议。
为了消除UDP的不确定性,在UDP协议之上,新增了QUIC协议。

使用QUIC协议代替TCP协议中关于可靠、流量控制的部分,因此使得HTTP3可以可靠的进行通讯传输。

在.net 6预览版的asp.net core 上,微软添加了对 HTTP/3 的支持,这为 Web 带来了很多改进。HTTP3 带来了更快的连接设置以及在低质量网络上的改进性能。

从中我们也能看出微软对.net 6给予的厚望。

Microsoft 现在添加了对 HTTP/3 的支持以及为 HTTP/3 配置 TLS (https) 的支持。

🎏 1. HTTP/3 TLS 配置

让我们看看如何使用以下命令在小型 MVC 应用程序中配置 HTTP/3:

dotnet new mvc -o Http3Tls -n Http3Tls
cd Http3Tls
code .

此命令创建一个 MVC 应用程序,切换到项目文件夹并打开 VSCode。

我们需要在Program.cs中配置 HTTP/3,就如下面代码所示:


public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder
                    .ConfigureKestrel((context, options) =>
                    {
                        options.EnableAltSvc = true;
                        options.Listen(IPAddress.Any, 5001, listenOptions =>
                        {
							// Enables HTTP/3
                            listenOptions.Protocols = HttpProtocols.Http3;
                            // Adds a TLS certificate to the endpoint
                            listenOptions.UseHttps(httpsOptions =>
                            {
                                httpsOptions.ServerCertificate = LoadCertificate();
                            });
                        });
                    })
                    .UseStartup<Startup>();
            });
}

这里标志EnableAltSvc为浏览器设置了一个 Alt-Svc 标头。

以告诉这是现有 HTTP/1 或 HTTP/2 的替代服务。这需要告诉浏览器,替代服务 - 在这种情况下是 HTTP/3 - 应该像现有服务一样对待。

这需要一个 https 连接来保证安全和可信。

使用listenOptions.UseHttps配置ssl的证书。

使用 listenOptions.Protocols = HttpProtocols.Http3; 激活Http3 服务。

是的,就这么简单,一个适应http3协议的服务已经搭建完成。

🎏 2 http/3 优势小结

由于Http/3协议,基于 UDP, 其避免了 TCP、Http/1、HTTP/2 的经典问题,实现了一个安全高效可靠的 HTTP 通信协议。

凭借着 0 RTT 建立连接、平滑的连接迁移、基本消除了队头阻塞,并增强了流量控制等特性, 在绝大多数场景下获得了比 HTTP/2 更好的效果。

因此 Http /3 必将是 http协议的未来。

🎏 3. 小结

例行小结,理性看待!

结的是啥啊,结的是我想你点赞而不可得的寂寞。😳😳😳

👓都看到这了,还在乎点个赞吗?

👓都点赞了,还在乎一个收藏吗?

👓都收藏了,还在乎一个评论吗?

以上是关于.net 6 新特性,支持HTTP/3 端点发布的主要内容,如果未能解决你的问题,请参考以下文章

asp.net core 6 新特性,支持HTTP/3 端点发布

.NET 6 新特性 —— Random.Shared

.NET 6新特性试用 | Controller支持IAsyncDisposable

.NET 6 新特性 WaitAsync

.NET 6新特性试用 | 异步流

.NET 6 中 System.Text.Json 的新特性