百果情感网
您的当前位置:首页Asp.Net Core2.1前后使用HttpClient的两种方式

Asp.Net Core2.1前后使用HttpClient的两种方式

来源:百果情感网


二、现有HttpClient使用方式

在.Net Core2.1后,微软引入了HttpClientFactory彻底解决这个问题,工厂模式的职责是负责创建对象,这个类主要负责创建HttpClient实例

首先在StartUp中注册,可能会提示安装这个Nuget包

 services.AddHttpClient();

该方法内部实现过程可以浏览:https://www.gxlcms.com/article/157254.htm

其次,在需要使用时,使用构造函数注入即可

[Route("api/[controller]")]
[ApiController]
public class HttpClientController : ControllerBase
{
 IHttpClientFactory _httpClientFactory;

 public HttpClientController(IHttpClientFactory httpClientFactory)
 {
 _httpClientFactory = httpClientFactory;
 }

 [HttpGet]
 [Route(nameof(Index))]
 public async Task<IActionResult> Index()
 {
 var client = _httpClientFactory.CreateClient();
 var result = await client.GetAsync("http://aspnetcore.online/api/resource/getresource");
 return Ok(result);
 }
}

具体实现原理简述为:HttpClientFactory内部管理着一个连接句柄池,对每一个HttpClient使用一个句柄进行跟踪管理,当该实例使用完毕后,句柄仍然控制资源释放,在短期大量处理时,可以将这部分句柄完成对不同实例的跟踪管理,使得句柄,也就是相应的套接字生命周期延长,对套接字完成了复用。

总结

显示全文