httpcore是httpclient的底层人吗?

前面两篇文章透过源码角度理解了HttpClientFactory的内部实现,当我们在项目中使用时总会涉及以下几个问题:

接下来我们将从使用角度对上述问题作出说明。

以下代码参考了因為代码里展示的GitHub接口确实可以调通,省的我再写一个接口出来测试了

在此之前,我们需要了解一下Polly这个库Polly是一款基于.NET的弹性及瞬间错誤处理库, 它允许开发人员以顺畅及线程安全的方式执行重试(Retry),断路器(Circuit)超时(Timeout),隔板隔离(Bulkhead Isolation)及后背策略(Fallback)

当需要向某特定URL地址发送HTTP请求并嘚到相应响应时通常会用到HttpClient类。该类包含了众多有用的方法可以满足绝大多数的需求。但是如果对其使用不当时可能会出现意想不箌的事情。

对象所占用资源应该确保及时被释放掉但是,对于网络连接而言这是错误的。

原因有二网络连接是需要耗费一定时间的,频繁开启与关闭连接性能会受影响;再者,开启网络连接时会占用底层人socket资源但在HttpClient调用其本身的Dispose方法时,并不能立刻释放该资源這意味着你的程序可能会因为耗尽连接资源而产生预期之外的异常。

所以比较好的解决方法是延长HttpClient对象的使用寿命比如对其建一个静态嘚对象:

但从程序员的角度来看,这样的代码或许不够优雅

所以在.NET Core 程序中使用,还无法应用到诸如控制台一类的程序希望之后官方能夠对其继续增强,使得应用范围变得更广

我要回帖

更多关于 什么是底层 的文章

 

随机推荐