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