На сайте WebForms ASP.NET (IIS, один пул приложений) у меня есть вызов длинного метода веб-службы, на который ссылается Visual Studio в качестве ссылки на службу (.NET 4.0). К сожалению, я должен ждать информацию от веб-службы, прежде чем я смогу предоставить страницу пользователю. В настоящее время веб-служба вызывается синхронно, поэтому сервер не может повторно использовать текущий поток для обработки других запросов, что влияет на производительность.
Конечно, я могу генерировать асинхронные операции для ссылки на службу в Visual Studio и вызывать BeginGetFoo
вместо GetFoo
, но все же я должен как-то дождаться результата от веб-службы.
Здесь возникает вопрос. Если я использую AsyncWaitHandle.WaitOne
(как показано ниже), будет ли лучше в плане производительности всего приложения синхронный вызов, который я использую сегодня?
IAsyncResult result = fooSoapClient.BeginGetFoo();
result.AsyncWaitHandle.WaitOne();
var foo = fooSoapClient.EndGetFoo(result);
И, конечно, если ожидание может быть лучше, я открыт для предложений.