国漫手机壁纸

.NET 6 中的 HTTP/3 支持

根据官方博客的介绍,.NET6提供了对HTTP/3的预览支持,主要包括以下场景:在Kestrel、HTTP.Sys和IIS中,用于ASP.NET服务器在HttpClient中发送 outbound 请求面向gRPC.NET开发团队表示,HTTP/3的RFC还

NetSmell 出品

  根据官方博客的介绍,.NET 6 提供了对 HTTP/3 的预览支持,主要包括以下场景:

  • 在 Kestrel、HTTP.Sys 和 IIS 中,用于 ASP.NET 服务器
  • 在 HttpClient 中发送 outbound 请求
  • 面向 gRPC

  .NET 开发团队表示,HTTP/3 的 RFC 还没有最终确定,但他们还是将 HTTP/3 引入到了 .NET 6 中,方便用户开始进行试验,但这只是 .NET 6 的预览功能——因为它不符合 .NET 6 其余部分的质量标准。因此需要与其他服务器和客户端进行更广泛的测试以确保兼容性,尤其是在边界情况下。

  试用 HTTP/3

  如需使用 HTTP/3,需安装 MSQuic 及其 TLS 依赖项。

  目前只支持 Windows 和 Linux,.NET 6 暂不支持 macOS 上的 HTTP/3,主要是因为缺少与 QUIC 兼容的 TLS API。.NET 团队认为,由于 .NET 在 macOS 上使用 SecureTransport 来实现其 TLS 实现,它尚未包含支持 QUIC 握手的 TLS API。虽然可以使用 OpenSSL,但他们认为最好不要引入未与操作系统的证书管理集成的附加依赖项。

  示例

  使用 HTTP/3 的 gRPC

  gRPC 是一种使用 protobuf 序列化格式的 RPC 机制。gRPC 通常使用 HTTP/2 作为其传输。HTTP/3 使用了相同的语义,因此几乎不需要更改即可使其工作。gRPC over HTTP/3 由 .NET 团队提出,目前还不是一个标准。

  ASP.NET Server

var builder = WebApplication.CreateBuilder (args);

// Add services to the container.
builder.Services.AddGrpc ();
builder.WebHost.ConfigureKestrel ((context, options) =>
{
  options.Listen (IPAddress.Any, 5001, listenOptions =>
  {
    listenOptions.Protocols = HttpProtocols.Http3;
    listenOptions.UseHttps ();
  });
});
var app = builder.Build ();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment ())
{
app.UseDeveloperExceptionPage ();
}

app.MapGrpcService<GreeterService>();
app.MapGet ("/", () => "Communication with gRPC endpoints must be made through a gRPC client. To learn how to create a client, visit: https://go.microsoft.com/fwlink/?linkid=2086909");

app.Run ();

  Client

using Grpc.Net.Client;
using GrpcService1;
using System.Net;

var httpClient = new HttpClient ();
httpClient.DefaultRequestVersion = HttpVersion.Version30;
httpClient.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionExact;

var channel = GrpcChannel.ForAddress ("https://localhost:5001", new GrpcChannelOptions () { HttpClient = httpClient });
var client = new Greeter.GreeterClient (channel);

var response = await client.SayHelloAsync (
new HelloRequest { Name = "World" });

Console.WriteLine (response.Message);

  详情查看官方博客


			
			
显示余下内容
相关文章:
  1. 信用卡 PIN 码很容易猜测
  2. 神经元簇发能模拟 AI 学习策略
  3. 蜘蛛丝可能根本不具有抗菌性质
  4. 佳能因禁止无墨水打印机扫描被起诉
  5. DeepMind盈利后开始「买买买」!收购机器人模拟平台MuJoCo,全面开源
  6. 分析师:新MacBook Pro搭载自家芯片,苹果利润率更高了
  7. 格芯提交上市申请IPO,筹资约26亿美元
  8. 美股周二:中概股普涨 阿里涨超6% 高途涨逾12%
  9. 搭配自研处理器与安卓12,谷歌新机Pixel 6起价599美元
  10. 摩根士丹利:马斯克有望凭SpaceX成首位万亿美元富豪
  11. 《鱿鱼游戏》助奈飞三季度新增用户翻倍,股价近新高
  12. DOTA 2又上热搜了 为什么这次大家到处刷“猛犸”?
  13. 多位游戏巨头联合希望美国政府监管盗版和作弊网站
  14. Google Play Data Safety开始接受开发者申请:2022年将强制执行
  15. 价格欺诈投诉引发公益诉讼 京东“划线价”格式条款须整改
 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注