我知道很多人之前已经讨论过这个并且同意Httpclient最好被实例化一次并用于整个应用程序。我对这一点有一些疑问。
假设我有一个带有静态Httpclient变量的业务层类(带有双重检查锁),并且一个网页创建了一个业务层类的对象。
班级代码:
public class BL
{
//Lock object for double lock check
private static readonly object padlock = new object();
public static HttpClient httpClient;
public BL()
{
if (httpClient == null)
{
lock (padlock)
{
if (httpClient == null)
{
httpClient = new HttpClient();
}
}
}
}
public async Task<HttpResponseMessage> GetData(String URL)
{
return await httpClient.GetAsync(URL).ConfigureAwait(false);
}
}
页面代码
protected void Page_Load(object sender, EventArgs e)
{
BL blObj = new BL();
HttpResponseMessage response = blObj.GetData("http://....");
}