栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在WebAPI客户端中,每个调用创建一个新的HttpClient的开销是多少?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在WebAPI客户端中,每个调用创建一个新的HttpClient的开销是多少?

HttpClient
已被 设计用于多个呼叫
。即使跨多个线程。该
HttpClientHandler
有打算重新使用在调用凭据和饼干。拥有一个新
HttpClient
实例需要重新设置所有这些东西。此外,该
DefaultRequestHeaders
属性包含用于多个调用的属性。必须在每个请求上重置这些值都无法解决问题。

另一个主要优点

HttpClient
是能够添加
HttpMessageHandlers
到请求/响应管道中以应用交叉关注点。这些可能用于日志记录,审核,限制,重定向处理,脱机处理,捕获指标。各种各样的事情。如果在每个请求上创建了一个新的HttpClient,则需要在每个请求上设置所有这些消息处理程序,并且还需要以某种方式在这些处理程序的请求之间共享的任何应用程序级状态。

您使用的功能

HttpClient
越多,您越会发现重用现有实例是有意义的。

但是,我认为最大的问题是,当

HttpClient
处置一个类时,会处置
HttpClientHandler
它,然后强行关闭
TCP/IP
由管理的连接池中的连接
ServicePointManager
。这意味着每个带有新请求的请求都
HttpClient
需要重新建立新
TCP/IP
连接。

根据我的测试,在LAN上使用纯HTTP,对性能的影响可以忽略不计。我怀疑这是因为有一个底层的TCP
keepalive使得连接保持打开状态,即使

HttpClientHandler
试图关闭它也是如此。

根据互联网上的请求,我看到了一个不同的故事。由于每次必须重新打开请求,因此我看到了40%的性能下降。

我怀疑对

HTTPS
连接的影响会更糟。

我的建议是在 您的应用程序的生命周期内 为您连接到的每个不同的API 保留一个HttpClient实例



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/594678.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号