【发布时间】:2012-06-23 12:52:34
【问题描述】:
我正在我的每个静态请求方法中重新创建 HttpClient 的实例,但 read 最好(在大多数情况下)重用 HttpClient 实例。
在静态类中重用HttpClient 实例的首选/推荐方式是什么?
【问题讨论】:
标签: c# .net static .net-4.0 httpclient
我正在我的每个静态请求方法中重新创建 HttpClient 的实例,但 read 最好(在大多数情况下)重用 HttpClient 实例。
在静态类中重用HttpClient 实例的首选/推荐方式是什么?
【问题讨论】:
标签: c# .net static .net-4.0 httpclient
由于您的请求方法是静态的,HttpClient 也必须是该类的 static 成员才能被重用(或某种道德等价物)。
您也可以决定在这里添加更多抽象,例如而不是抓住static 字段使用private static getter 方法;这使您可以集中决定是否应重用 HttpClient 或在每次调用的基础上返回另一个实例。
【讨论】:
我的理解是,您可以初始化 HTTP 客户端并重用该实例,只要您公开调用它就会是线程安全的,请参见此处的线程安全部分 https://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.dnsrefreshtimeout(v=vs.110).aspx 如果您每次都创建一个新的 HTTPClient 调用,那么您所做的就是打开多个套接字。 这篇文章(以及相关的 cmets)非常简洁地处理了这个话题。 https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/
【讨论】: