2012-06-23 20 views
1

我重建的HttpClient一个实例在我的每一个静态请求方法,但有read的是,优选(在大多数情况下),以重用一个HttpClient实例。重用“HttpClient的”有效静态类

在静态类中重用HttpClient实例的首选/推荐方式是什么?

回答

1

由于您的请求方法是静态的,所以HttpClient也必须是该类的成员,以便重用(或某些道德等同物)。

您也可以决定在这里添加更多的抽象,例如而不是抓住一个static字段使用一个private static getter方法;这使您可以集中决定是应该重新使用HttpClient还是以每个呼叫为基础返回其他实例。

+0

这不是一个危险的答案吗?我的理解是,私下调用HttpClient不是线程安全的?我的理解是你要么静态地或者在课堂上称呼它,但总是公开的。 – AndrewThompson

0

我的理解是,你可以初始化HTTP客户端和重用的实例,只要你把它公开将是线程安全的看到他线程安全部在这里https://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.dnsrefreshtimeout(v=vs.110).aspx 如果您创建一个新的了HTTPClient打电话,每次你都正在打开multuiple套接字。 这篇文章(和相关评论)非常简洁地解决了这个话题。 https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/