我应该创建多少个HttpClient?

时间:2014-06-04 17:19:39

标签: 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?

1 个答案:

答案 0 :(得分:1)

实际上,处置HttpClient不会强制关闭来自连接池的底层TCP / IP连接。您的最佳性能方案是您的建议:

  • 为您需要连接的每个后端服务或应用程序的生命周期保留一个HttpClient实例。

  • 根据您对后端服务的详细信息,您可能还希望为该后端服务上的每个不同API提供客户端。 (同一域中的API可以遍布各处。)