Мне нужен Http-запрос, который я могу использовать в .Net, который занимает менее 100 мс. Я могу добиться этого в моем браузере, поэтому я действительно не понимаю, почему это такая проблема в коде.
Я пробовал WinHTTP, а также WebRequest. Create и оба они превышают 500 мс, что неприемлемо для моего варианта использования.
Вот примеры простого теста, который я пытаюсь пройти. (WinHttpFetcher - это простая оболочка, которую я написал, но она выполняет самый тривиальный пример Get Request, который, я не уверен, стоит вставлять.)
Я получаю приемлемые результаты с LibCurlNet, но если есть одновременное использование класса У меня нарушение доступа. Кроме того, поскольку это не управляемый код и его нужно скопировать в каталог bin, он не идеален для развертывания с моим проектом с открытым исходным кодом.
Есть ли идеи по поводу другой реализации, которую стоит попробовать?
[Test]
public void WinHttp_Should_Get_Html_Quickly()
{
var fetcher = new WinHttpFetcher();
var startTime = DateTime.Now;
var result = fetcher.Fetch(new Uri("http://localhost"));
var endTime = DateTime.Now;
Assert.Less((endTime - startTime).TotalMilliseconds, 100);
}
[Test]
public void WebRequest_Should_Get_Html_Quickly()
{
var startTime = DateTime.Now;
var req = (HttpWebRequest) WebRequest.Create("http://localhost");
var response = req.GetResponse();
var endTime = DateTime.Now;
Assert.Less((endTime - startTime).TotalMilliseconds, 100);
}