我很好奇 HttpClientFactory
类 的目的。MSDN上没有关于它存在的描述(参见链接)。
有一些带有更专业参数的Create
方法,但大多数时候我想知道没有参数的调用和普通构造函数之间的区别。
var httpClient = HttpClientFactory.Create();
VS
var httpClient = new HttpClient();
在大多数例子中,我看到使用new HttpClient()
,没有任何using
语句,即使HttpClient
类继承自IDisposable
。
由于HttpClient
类继承自IDisposable
,工厂是否进行了一些池化或缓存?有性能优势吗,还是无关紧要?
更新- .NET Core 2.1中的IHttpClientFactory
请注意,自提出此问题以来,已发布了新版本的.NET,.NET Core 2.1引入了一种新的和改进的方法来获取HTTP客户端。
有关在.NET Core中使用IHttpClientFactory
的详细信息,请参阅下面的Ali Bayat答案。
但是,我将Darrel Miller的答案保留为接受的答案,因为这是针对在.NET Framework v4.8之前提出该问题的情况的正确答案。
在.NET 5中,.NET Framework和.NET Core之间的差异将会被调整,您应该使用IHttpClientFactory
。
更新- 官方指导
微软已添加了有关处置行为和推荐使用的文档:https://learn.microsoft.com/en-us/dotnet/fundamentals/networking/httpclient-guidelines
HttpClient
时可能会出现的问题。 - Bart Verkoeijen