二、現有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使用一個句柄進行跟蹤管理,當該實例使用完畢后,句柄仍然控制資源釋放,在短期大量處理時,可以將這部分句柄完成對不同實例的跟蹤管理,使得句柄,也就是相應的套接字生命周期延長,對套接字完成了復用。
總結
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com