.NET 8网络改进有哪些具体细节?

摘要:原文 | Máňa,Natalia Kondratyeva 翻译 | 郑子铭 简化的 SocketsHttpHandler 配置 .NET 8 添加了更方便、更流畅的方式来使用 SocketsHttpHandler
原文 | Máňa,Natalia Kondratyeva 翻译 | 郑子铭 简化的 SocketsHttpHandler 配置 .NET 8 添加了更方便、更流畅的方式来使用 SocketsHttpHandler 作为 HttpClientFactory 中的主处理程序 (dotnet/runtime#84075)。 您可以使用 UseSocketsHttpHandler 方法设置和配置 SocketsHttpHandler。您可以使用 IConfiguration 从配置文件设置 SocketsHttpHandler 属性,也可以从代码中配置它,或者可以结合使用这两种方法。 请注意,将 IConfiguration 应用于 SocketsHttpHandler 时,仅解析 bool、int、Enum 或 TimeSpan 类型的 SocketsHttpHandler 属性。 IConfiguration 中所有不匹配的属性都将被忽略。配置仅在注册时解析一次并且不会重新加载,因此处理程序在应用程序重新启动之前不会反映任何配置文件更改。 // sets up properties on the handler directly services.AddHttpClient("foo") .UseSocketsHttpHandler((h, _) => h.UseCookies = false); // uses a builder to combine approaches services.AddHttpClient("bar") .UseSocketsHttpHandler(b => b.Configure(config.GetSection($"HttpClient:bar")) // loads simple properties from config .Configure((h, _) => // sets up SslOptions in code { h.SslOptions.RemoteCertificateValidationCallback = delegate { return true; }; }); ); { "HttpClient": { "bar": { "AllowAutoRedirect": true, "UseCookies": false, "ConnectTimeout": "00:00:05" } } } QUIC OpenSSL 3 支持 当前大多数 Linux 发行版在其最新版本中都采用了 OpenSSL 3: Debian 12+:Bookworm OpenSSL Ubuntu 22+:Jammy OpenSSL Fedora 37+:Fedora OpenSSL OpenSUSE:Tumbleweed OpenSSL AlmaLinux 9+:AlmaLinux 9 软件包存储库 .NET 8 的 QUIC 支持已为此做好准备 (dotnet/runtime#81801)。 实现这一目标的第一步是确保 System.Net.Quic 下使用的 QUIC 实现 MsQuic 可以与 OpenSSL 3+ 一起使用。这项工作发生在 MsQuic 存储库 microsoft/msquic#2039 中。下一步是确保 libmsquic 包的构建和发布具有对特定发行版和版本的默认 OpenSSL 版本的相应依赖性。例如 Debian 发行版: Debian 11 libmsquic 依赖于 OpenSSL 1.1 Debian 12 libmsquic 依赖于 OpenSSL 3 最后一步是确保正在测试正确版本的 MsQuic 和 OpenSSL,并且测试覆盖了所有 .NET 支持的发行版。
阅读全文