WebClient是否具有HTTP连接池?如果不是,那么HttpClient会拥有它吗?

时间:2017-01-31 11:24:17

标签: c# asp.net-web-api webclient connection-pooling dotnet-httpclient

我想从代码中使用rest api。现在,为此,我可以使用WebClientHttpClient

但是,HttpClient具有连接池支持,如文档中所述。

  

每个HttpClient实例都使用自己的连接池,隔离它   来自其他HttpClient实例执行的请求的请求

那么,WebClient是否有连接池支持?

因为我将多次调用此api,因此它不希望"为每个呼叫创建新连接"在api呼叫期间是性能的开销。

我应该使用哪一个,以获得更好的性能?

1 个答案:

答案 0 :(得分:0)

我正在寻找这个。并发现HttpClient确实具有连接池的一些更新信息。

TLDR:

var socketHandler = new SocketsHttpHandler()
{
    AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
    PooledConnectionLifetime = TimeSpan.FromMinutes(10),
    PooledConnectionIdleTimeout = TimeSpan.FromMinutes(5),
    MaxConnectionsPerServer = 10
};

var httpClient = new HttpClient(socketHandler);

您可以在此处了解更多信息:https://www.stevejgordon.co.uk/httpclient-connection-pooling-in-dotnet-core