我很好奇这样做的目的是什么HttpClientFactory class。 MSDN 上没有说明它为何存在(请参阅链接)。
有Create methods有更专门的参数,但我主要想知道不带参数的调用和普通构造函数之间有什么区别。
var httpClient = HttpClientFactory.Create();
VS
var httpClient = new HttpClient();
在大多数例子中我看到使用new HttpClient()
,没有任何using
声明,尽管HttpClient class源自于IDisposable
.
自从HttpClient
类源自IDisposable
,工厂是否进行了一些池化或缓存?是否有性能优势,或者无关紧要?
更新 -IHttpClientFactory
在 .NET Core 2.1 中
请注意,自从提出这个问题以来,.NET 的新版本已经发布,并且 .NET Core 2.1 引入了一种新的且经过大幅改进的方法来获取 HTTP 客户端。
使用方法请参考下面 Ali Bayat 的回答IHttpClientFactory
而是使用 .NET Core。
但是,我将 Darrel Miller 的答案保留为可接受的答案,因为这是在 .NET Framework v4.8 之前使用的正确答案,为此问题被提出。
使用 .NET 5,.NET Framework 和 .NET Core 之间的差异将得到调整,您应该使用IHttpClientFactory
反而。
更新 - 官方指导
Microsoft 添加了有关处置行为和建议使用的文档:https://learn.microsoft.com/en-us/dotnet/fundamentals/networking/httpclient-guidelines