Если я не хочу что-либо делать во время ожидания, есть ли смысл использовать асинхронные методы инфраструктуры объектов? - PullRequest
0 голосов
/ 08 ноября 2018

если у вас есть контроллер, который содержит только этот код:

var ThingQueryable = GetQueryable();

Thing ext = await ThingQueryable.FirstOrDefaultAsync();

Есть ли какая-то польза от этого кода?

Thing ext = ThingQueryable().FirstOrDefault();

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Это действительно зависит от того, какое решение вы должны построить. В данном случае это простое приложение, которое, как вы знаете, будет использоваться 5-10 пользователями в интрасети для небольшой компании, тогда использование его не принесет особой пользы (такие приложения / система звучат для меня довольно устаревшими). Даже в этом случае я буду рассматривать использование асинхронной службы, только начиная с того факта, что она стоит вам столько же времени, поскольку она действительно хорошо поддерживается фреймворком.

Основная цель - масштабируемость со стороны сервера. Так что, если вы строите систему, которую хотите масштабировать, вы должны определенно пойти на это. Если вы начнете его использовать, это никак не улучшит ваши проблемы с производительностью - если у вас плохие запросы, вам все равно придется их улучшать.

Мне нравятся эти два поста о том, как продемонстрировать выигрыш в производительности от его использования: Масштабируемые и производительные API-интерфейсы ASP.NET Core Web и Async vs Blocking services .

Короче говоря, когда вы начнете создавать систему, и все будет просто, вы никогда не узнаете, когда они станут более сложными (они, вероятно, пойдут) - достижение лучшей производительности на первом этапе жизненного цикла проекта может сэкономить вам массу неприятностей позже. .

0 голосов
/ 08 ноября 2018

Есть ли какое-либо преимущество над этим кодом?

Для клиент-серверного кода в Windows Forms или в WPF преимущество состоит в том, что вы не блокируете поток пользовательского интерфейса во время ожидания назапрос.Это большое дело.

Для веб-приложений или API преимущество заключается в том, что вы не блокируете поток клиента во время ожидания результатов.Для большинства приложений баз данных это преимущество составляет крошечный , поскольку у вас не будет много сотен одновременно выполняющихся запросов к базе данных, и поэтому преимущество блокирования потоков not невелико.

Существует также небольшой риск того, что при выполнении запроса не будет доступного потока, поэтому выполнение метода может занять немного больше времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...