找回密码
 立即注册
首页 业界区 业界 .NET 10 网络改进:HTTP、安全与网络原语的全面升级 ...

.NET 10 网络改进:HTTP、安全与网络原语的全面升级

孔季雅 前天 12:20
.NET 10 网络改进:HTTP、安全与网络原语的全面升级

引言

随着.NET 10的发布,微软在网络技术栈上带来了一系列令人兴奋的改进和新增功能。这些改进覆盖了HTTP协议处理、WebSockets API、安全增强以及网络基础原语等多个方面。本文将深入探讨这些技术改进,帮助开发者更好地理解和利用.NET 10在网络编程方面的最新能力。
HTTP改进

WinHttpHandler性能优化

.NET 10中对WinHttpHandler的服务器证书验证进行了显著优化。通常情况下,证书验证由原生WinHTTP实现处理,但当用户代码通过ServerCertificateValidationCallback注册自定义验证逻辑时,系统会跳过内部验证流程。由于原生WinHTTP缺乏对应连接建立的事件,托管层不得不在每个请求中调用自定义回调,这导致了性能开销。
为解决这一问题,.NET 10引入了基于服务器IP地址的已验证证书缓存机制。当发送新请求时,如果证书已被验证过,WinHttpHandler将跳过证书链构建和自定义回调调用。此外,每次新连接都会清除该服务器IP的缓存证书,确保在连接重建时重新验证。
这一优化功能默认关闭,需要通过AppContext开关启用:
  1. AppContext.SetSwitch("System.Net.Http.UseWinHttpCertificateCaching", true);
复制代码
测试表明,启用此功能后,证书验证回调仅调用一次,而非每次请求都调用,显著提升了性能。
新增HTTP动词QUERY

.NET 10引入了新的HTTP动词QUERY,允许在请求体中发送查询细节,同时保持请求的安全性和幂等性。这在查询细节超出URI长度限制或服务器不支持GET请求体时特别有用。由于QUERY方法仍在标准化过程中,.NET 10目前仅添加了字符串常量供开发者使用:
  1. using var client = new HttpClient();
  2. var response = await client.SendAsync(new HttpRequestMessage(HttpMethod.Query, "https://api.example.com/resource"));
复制代码
Cookie改进

一个小但实用的改进是将CookieException构造函数公开化,允许开发者手动抛出Cookie异常:
[code]throw new CookieException("
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册