Ye Olde Add Web Reference генерирует вызовы XXXAsync к службам, которые используют события, чтобы сообщить вызывающему абоненту о завершении вызова.
Добавить ссылку на службу в чем-то похожем на WPF или консольное приложение, когда ему приказывают генерировать асинхронные операции, использует шаблон проектирования IAsyncResult (операции BeginXXX и EndXXX).Насколько я понимаю, это обычно рассматривается как шаг вперед в удобстве использования и гибкости - вы можете использовать обратный вызов, вы можете начать блокировку в любой момент времени, просто вызвав EndXXX, вы можете сгруппировать дескрипторы ожидания и блокировать набор операций,можно опросить и т. д.
Почему ASR в Silverlight не использует IAsyncResult?Я предполагаю, потому что дизайнеры хотели прояснить, что на самом деле требуется полная асинхронность, и если бы они использовали шаблон проектирования IAsyncResult, было бы слишком легко попробовать просто сразу вызвать Begin, а затем End, чтоза камень преткновения, который был бы затронут примерно 100% новых разработчиков или людей, которые плохо разбирались в асинхронности.