最佳答案
我很好奇 HttpClientFactory
级的目的是什么。没有描述为什么它存在于 MSDN 上(见链接)。
有一些带有更多专门化参数的 Create
方法,但我最想知道的是,没有参数的调用和普通构造函数之间有什么区别。
var httpClient = HttpClientFactory.Create();
VS
var httpClient = new HttpClient();
在大多数例子中,我看到了 new HttpClient()
的使用,没有任何 using
语句,即使 HttpClient
级是从 IDisposable
派生出来的。
因为 HttpClient
类是从 IDisposable
派生出来的,所以工厂是否执行了一些池或缓存操作?是否有绩效福利,还是无关紧要?
IHttpClientFactory
请注意,由于问了这个问题,新版本的。NET 已经发布,并且。NET Core 2.1为获得 HTTP 客户端引入了一种全新的、经过大量改进的方法。
参考下面 Ali Bayat 的回答,使用 IHttpClientFactory
代替.NET Core。
然而,我保留达雷尔米勒的答案作为接受的答案,因为这是正确的答案用于。NET Framework 最高版本为 v4.8,为此提出了这个问题。
对于.NET5,.NETFramework 和.NETCore 之间的差异将被对齐,您应该改用 IHttpClientFactory
。
Microsoft 添加了有关处置行为和推荐使用的文档: Https://learn.microsoft.com/en-us/dotnet/fundamentals/networking/httpclient-guidelines