Урок 11: Асинхронные репозитории
Блокирующий вызов базы данных замораживает целый поток, пока не вернётся ответ — при реальной нагрузке это означает задыхающийся сервер и застывший экран. В этом уроке мы строим асинхронный репозиторий: интерфейс, который возвращает Task, и методы, которые ждут его с помощью await, никого не блокиру
Асинхронный метод — это как ресторанный пейджер: вместо того чтобы стоять и ждать у стойки, вы берёте зуммер и идёте заниматься другими делами — а когда еда готова, он звонит.
- Асинхронный репозиторий
- Контракт доступа к данным, все методы которого возвращают Task<T> — так вызывающие ожидают результаты, не блокируя поток.
- Task<T> — обещание результата
- Возвращается немедленно при вызове асинхронного метода; само значение T становится доступным только когда работа завершается.
- await — ожидание без блокировки
- Приостанавливает метод, освобождает поток для другой работы и возобновляется с этого места с результатом, когда Task завершается.