星空网 > 软件开发 > ASP.net

Lind.DDD.Utils.HttpHelper关于对HttpClient的正确使用

回到目录

官方的不一定是对的,机器最能证明一切

不知道从什么时候起,我们在写数据库连接,网络连接,文件操作时会习惯加上using,这种习惯被我们误称为一种模式,但事实上,一切事情都有因有果的,使用using的作用是什么?我想这个问题大家都知道应该,它可以释放资源,而对于数据库连接来说,它不是释放数据连接,而只是把连接放里“连接池”,等待下次使用时,直接用池子里取出来即可,好处当然就是省去了很多“建立连接”时的开销,而不对网络连接来说,则不是那么简单了,不能一同而义,这点对于MSDN也有错误的说法和写法,最近在看博文时(老外的,Infoq上翻译的)给出了有利的证据,具体看下文。

using的写法其实就是对IDispose模块的实现 

 using (var http = new HttpClient(handler))  {  http.Timeout = new TimeSpan(0, 0, timeOut);  HttpResponseMessage response;  response = http.GetAsync(GeneratorUri(requestUri, ApiValidateHelper.GenerateCipherText(nv))).Result;  return response;  }

对于上面的代码,也是MSDN推荐的写法,即在使用完网络资源后,自动释放它,而对于下一次网络资源的访问,还需要从新去构建,事实上,从资源的销毁到下次资源的建立需要很大的代价,而且你的网络连接的构建(套接字)是有限制的,并不是无穷无近的,所以,我们必须要进行控制。

相关中文文章:http://www.infoq.com/cn/news/2016/09/HttpClient

相关英文文章:http://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/

下面是大叔对using方式进行的测试,可以通过截图看到,我们的TCP连接有很多,这样当高并**况下,你的套接字连接将会被用斤。

Lind.DDD.Utils.HttpHelper关于对HttpClient的正确使用

可用套接字耗尽后可能出现这样的异常:System.Net.Sockets.SocketException!

改进后的程序(单例或者静态化的HttpClient)

   readonly static HttpClient http = new HttpClient(new HttpClientHandler()    {      AutomaticDecompression = System.Net.DecompressionMethods.GZip    });    [TestMethod]    public void Get()    {      Stopwatch sw = new Stopwatch();      sw.Restart();      for (int i = 0; i < 1000; i++)      {        var response = http.GetAsync("http://www.sina.com").Result;      }      sw.Stop();      Console.WriteLine("1000个请求的时间" + sw.ElapsedMilliseconds);    }

修改之后,我们可以看到整个HttpClient的测试性能有了明显的提升!

Lind.DDD.Utils.HttpHelper关于对HttpClient的正确使用

最后,感谢Infoq的编辑“谢丽”找了这么好的一篇文章,辛苦了!

回到目录




原标题:Lind.DDD.Utils.HttpHelper关于对HttpClient的正确使用

关键词:ie

ie
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

亚马逊店铺如何利用tiktok测评 :https://www.goluckyvip.com/news/6348.html
美国海运消息:受俄乌战争影响,海空运价预计3月份将大幅上涨:https://www.goluckyvip.com/news/6349.html
2019年3月4日 Lazada入驻将进一步开放:https://www.goluckyvip.com/news/635.html
菜鸟推出宁波—曼谷经济海运服务!运输成本降低57%! :https://www.goluckyvip.com/news/6350.html
3月开始,英国FBA的产品又可以配送到欧盟国家了!:https://www.goluckyvip.com/news/6351.html
Lazada商家信息安全如何保护?Ushop BI数据分析软件告诉你 :https://www.goluckyvip.com/news/6352.html
如何用摄影作品表现“芳草鲜美,落英缤纷”的:https://www.vstour.cn/a/411247.html
70岁以上景区门票优惠70周岁还是虚岁?:https://www.vstour.cn/a/411248.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流