我想从代码中使用一个rest api。现在,为此,我可以使用WebClient或HttpClient。
但是,HttpClient支持连接池,如文档中所述。
每个HttpClient实例都使用自己的连接池,隔离其来自其他HttpClient实例执行的请求的请求
那么,WebClient
是否支持连接池?
由于我将多次调用此api,因此它不希望"为每次调用创建新连接"成为api调用期间性能的开销。
那么,为了获得更好的性能,我应该使用哪一个呢?
我围绕这个进行了搜索。发现了一些更新的信息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