1

我正在我的HttpClient每个静态请求方法中重新创建一个实例,但已经读到(在大多数情况下)重用一个HttpClient实例是可取的。

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

4

2 回答 2

1

由于您的请求方法是静态的,因此HttpClient也必须是static该类的成员才能被重用(或某种道德等价物)。

您还可以决定在此处添加更多抽象,例如,static使用private staticgetter 方法代替获取字段;这使您可以集中决定是否HttpClient应该重用或在每次调用的基础上返回另一个实例。

于 2012-06-23T13:02:36.627 回答
0

我的理解是,只要您公开调用它,您就可以初始化 HTTP 客户端并重用该实例,这将是线程安全的,请参见此处的线程安全部分https://msdn.microsoft.com/en-us/library/system。 net.servicepointmanager.dnsrefreshtimeout(v=vs.110).aspx 如果您每次都创建一个新的 HTTPClient 调用,那么您所做的就是打开多个套接字。这篇文章(以及相关的评论)非常简洁地处理了这个话题。 https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/

于 2017-10-04T08:44:39.930 回答