Как дождаться результата асинхронного вызова веб-службы в ASP.NET для достижения наилучшей производительности

На сайте 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);

И, конечно, если ожидание можно сделать лучше, я открыт для предложения.

7
задан Pol 8 February 2012 в 13:58
поделиться