我应该创建多少个 HttpClient?

JAL*_*RED 6 c# dotnet-httpclient

最初我的代码在每个请求的 using 语句中创建了一个新的 HttpClient 。然后我阅读了几篇关于重用 HttpClient 来提高性能的文章。

这是一篇这样的文章的摘录:

我不建议在 Using 块内创建 HttpClient 来发出单个请求。当 HttpClient 被释放时,它也会导致底层连接也被关闭。这意味着下一个请求必须重新打开该连接。您应该尝试重新使用您的 HttpClient 实例。

http://www.bizcoder.com/httpclient-it-lives-and-it-is-glorious

在我看来,只有当多个请求连续发送到同一个地方时,保持连接打开才有用 - 例如 www.api1.com。

我的问题是,我应该如何创建 HttpClients?

我的网站在后端讨论了大约十种不同的服务。

我应该创建一个 HttpClient 供所有人使用,还是应该为后端使用的每个域创建一个单独的 HttpClient?

示例:如果我与 www.api1.com 和 www.api2.com 交谈,我应该创建 2 个不同的 HttpClient,还是只创建一个 HttpClient?

tez*_*nia 5

确实,处理 HttpClient 不会从连接池中强行关闭底层 TCP/IP 连接。您的最佳性能方案是您所建议的:

  • 为您需要连接的每个后端服务或应用程序的生命周期保持一个 HttpClient 实例处于活动状态。

  • 根据您拥有的有关后端服务的详细信息,您可能还希望为该后端服务上的每个不同 API 都拥有一个客户端。(同一域中的 API 可能会在所有地方进行路由。)