当我们搜索HttpClient的最佳实践时会了解到,HttpClient实例创建时会花费大量的资源用于创建HttpClientHandler实例,而且大量创建HttpClient实例还有可能造成socket端口全部耗尽的问题,所以有些开发人员会想到利用static变量来减少HttpClient的创建。但是static的HttpClient有存在无法适应DNS信息更新的问题,因此就引出了对于使用HttpClientFactory来管理HttpClient生命周期的建议。
在.NET Framework中使用HttpClientFactory,我们需要安装Microsoft.Extensions.Http和Microsoft.Extensions.DependencyInjection两个NuGet包,前者使我们可以使用HttpClientFactory,后者则使我们可以配置(configure)HttpClientFactory。如果,您还想通过Polly来进一步配置request,则还需安装Microsoft.Extensions.Http.Polly。
本文示例如何实现并配置一个Typed HttpClient。其实现的关键在于,我们需要自定义一个会使用到HttpClient实例的接口,之后在实现该接口时,将HttpClient实例作为参数传入其构造函数中。
using System.Net.Http;
namespace ConsoleApp
{
public interface ICustomHttpClient
{
HttpC