Я знаю, что многие обсуждали это раньше и согласились, что 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://....");
}
Статические переменные сохраняются в течение всего времени жизни приложения.Это означает, что статический httpclient будет активен до тех пор, пока IIS и веб-приложение хоста будут активны (даже после окончания жизненного цикла страницы, на которой создан BL-объект) или будут просто жить до тех пор, пока страница не будет удалена?
Если несколько одновременных страниц, например, 500 создали объект BL и использовали статический httpclient, как 500 пользователей будут обслуживаться только одним статическим httpclient, который разрешает только одно http-соединение с сервером?Я не могу получить это.
Есть ли надежный инструмент для визуальной студии для тестирования загрузки и производительности вышеуказанного кода?