我很好奇HttpClientFactory
上课的目的是什么。MSDN 上没有说明它存在的原因(请参阅链接)。
有些Create
方法具有更专业的参数,但我主要想知道不带参数的调用和普通构造函数之间有什么区别。
var httpClient = HttpClientFactory.Create();
VS
var httpClient = new HttpClient();
在大多数示例中,我看到使用new HttpClient()
, 没有任何using
语句,即使HttpClient
该类派生自IDisposable
.
由于HttpClient
该类派生自IDisposable
,工厂是否进行了一些池化或缓存?是否有性能优势,还是无关紧要?
更新 - .NET Core 2.1 中的 <code>IHttpClientFactory
请注意,自从提出这个问题以来,已经发布了较新版本的 .NET,并且 .NET Core 2.1 引入了一种新的且经过大幅改进的方法来获取 HTTP 客户端。
请参阅下面 Ali Bayat 的回答,以便IHttpClientFactory
与 .NET Core 一起使用。
但是,我将 Darrel Miller 的答案保留为已接受的答案,因为这是在 .NET Framework v4.8 之前使用的正确答案,为此提出了这个问题。
在 .NET 5 中,.NET Framework 和 .NET Core 之间的差异将得到调整,您应该IHttpClientFactory
改用它。