当前位置: 首页 > 科技观察

.NET6中对HTTP-3的支持

时间:2023-03-12 01:01:42 科技观察

根据官方博客介绍,.NET6提供了对HTTP/3的预览支持,主要包括以下场景:在Kestrel、HTTP.Sys和IIS中,对于ASP。NET服务器在HttpClient中向gRPC发送出站请求。NET开发组说HTTP/3的RFC还没有最终确定,但是他们还是把HTTP/3引入了.NET6,方便用户开始试验,但这只是。NET6预览功能-因为它不符合.NET6其余部分的质量标准。因此需要与其他服务器和客户端进行更广泛的测试以确保兼容性,尤其是在边缘情况下。尝试HTTP/3要使用HTTP/3,请安装MSQuic及其TLS依赖项。目前仅支持Windows和Linux,.NET6尚不支持macOS上的HTTP/3,主要是由于缺少与QUIC兼容的TLSAPI。.NET团队认为,由于.NET在macOS上使用SecureTransport实现TLS,因此它还不包含支持QUIC握手的TLSAPI。虽然可以使用OpenSSL,但他们认为最好不要引入未与操作系统的证书管理集成的其他依赖项。示例gRPCoverHTTP/3gRPC是一种使用protobuf序列化格式的RPC机制。gRPC通常使用HTTP/2作为其传输方式。HTTP/3使用相同的语义,因此只需很少的更改即可使其工作。gRPCoverHTTP/3是由.NET团队提出的,目前还不是标准。ASP.NETServervarbuilder=WebApplication.CreateBuilder(args);//添加服务到container.builder.Services.AddGrpc();builder.WebHost.ConfigureKestrel((context,options)=>{options.Listen(IPAddress.Any,5001,listenOptions=>{listenOptions.Protocols=HttpProtocols.Http3;listenOptions.UseHttps();});});varapp=builder.Build();//配置HTTPrequestpipeline.if(app.Environment.IsDevelopment()){app.UseDeveloperExceptionPage();}app.MapGrpcService();app.MapGet("/",()=>"CommunicationwithgRPCendpointsmustbemadethroughagRPCclient.Telearnhowtocreateaclient,visit:https://go.microsoft.com/fwlink/?linkid=2086909");app.Run();ClientusingGrpc.Net.Client;usingGrpcService1;usingSystem.Net;varhttpClient=newHttpClient();httpClient.DefaultRequestVersion=HttpVersion.Version30;httpClient.DefaultVersionPolicy=HttpVersionPolicy.RequestVersionExact;varchannel=GrpcChannel.ForAddress("https://localhost:5001",newGrpcChannelOptions(){HttpClient=httpClient});varclient=newGreeter.GreeterClient(channel);varresponse=awaitclient.SayHelloAsync(newHelloRequest{Name="World"});Console.WriteLine(response.Message);具体查看官方博客网站禁止未经授权转载新闻,违者将依法追究相关法律责任。授权请联系:oscbianji#oschina.cn文章标题:HTTP/3supportin.NET6本文地址:https://www.oschina.net/news/161364/http-3-support-in-dotnet-6

最新推荐
猜你喜欢