Согласно ASP. NET Базовые рекомендации по производительности ядра из ASP. NET команда:
Избегать блокировки вызовов
ASP. NET Основные приложения должны быть рассчитаны на одновременную обработку множества запросов. Асинхронные API позволяют небольшому пулу потоков обрабатывать тысячи одновременных запросов, не дожидаясь блокирования вызовов. Вместо ожидания выполнения длительной синхронной задачи поток может работать с другим запросом.
Распространенная проблема производительности в ASP. NET Основные приложения блокируют вызовы, которые могут быть асинхронными. Многие синхронные блокирующие вызовы приводят к истощению пула потоков и уменьшению времени отклика.
- Делают пути горячего кода асинхронными.
- Асинхронно работают с API доступа к данным, ввода-вывода и API длительных операций если асинхронный API доступен. Не используйте Task.Run, чтобы сделать API-интерфейс синхронным асинхронным.
- Сделать действия контроллера / страницы бритвы асинхронными. Весь стек вызовов является асинхронным, чтобы использовать преимущества асинхронных / ожидающих шаблонов.
Избегать синхронного чтения или записи в теле HttpRequest / HttpResponse
Все I / O в ASP. NET Ядро асинхронно. Серверы реализуют интерфейс Stream, который имеет как синхронные, так и асинхронные перегрузки. Асинхронные должны быть предпочтительными, чтобы избежать блокировки потоков пула потоков. Блокировка потоков может привести к истощению пула потоков.
Предпочтение ReadFormAsyn c, а не Request.Form
Использование HttpContext.Request.ReadFormAsyn c вместо HttpContext.Request .FORM. HttpContext.Request.Form можно безопасно читать только при следующих условиях:
- Форма была прочитана при вызове ReadFormAsyn c и
- Кэшированное значение формы чтение с использованием HttpContext.Request.Form
Оптимизация доступа к данным и ввод-вывод
Взаимодействия с хранилищем данных и другими удаленными службами часто являются самыми медленными частями ASP. NET Базовое приложение. Эффективное чтение и запись данных крайне важны для хорошей производительности.
- Вызывайте все API доступа к данным асинхронно.