Хорошо, для начала ваш второй фрагмент кода вернул бы Task<T>
, а не T
.Окончательный ответ - «это зависит».
Если вашей странице требуется доступ к нескольким источникам данных, она может упростить распараллеливание доступа к этим источникам, используя только результаты каждого доступа.где необходимо.Так, например, вы можете запустить , делая длительную выборку данных в качестве первой части обработки вашей страницы, тогда вам нужен только результат в конце.Очевидно, что это можно сделать без использования async / await, но намного проще, когда язык помогает вам.
Кроме того, асинхронность может использоваться для обработки огромного количества долго выполняющихся запросов на небольшомчисло потоков, если большинство этих запросов будут простаивать в течение длительного времени - например, в случае длинного опроса.Я вижу, что асинхронные возможности используются в качестве альтернативы SignalR в некоторых сценариях.
Преимущества асинхронности на стороне сервера сложнее определить, чем на стороне клиента, поскольку различные способы, которыми это помогает - в то время как сторона "избегать работы в потоке пользовательского интерфейса" настолько очевидна, преимущество легко увидеть.
Не забывайте, что может бытьгораздо больше для кодирования на стороне сервера, чем просто интерфейс.По моему опыту, асинхронность, скорее всего, будет полезна при реализации служб RPC, особенно тех, которые взаимодействуют с несколькими другими службами RPC.
Как говорит Паси, это просто синтаксический сахар - но я считаю,что это достаточно сладкий сахар, так что он может сделать разницу между осуществляемой правильной асинхронной обработкой и просто слишком большими усилиями и сложностью.