Фильтры результатов
Фильтры результатов завершают выполнение экземпляра реализации IActionResult для метода действия. Распространенный сценарий применения фильтра результатов предусматривает добавление с его помощью информации заголовка в сообщение ответа HTTP.
Нововведения в ASP.NET Core
Помимо поддержки базовой функциональности ASP.NET MVC и ASP.NET Web API разработчики ASP.NET Core сумели добавить множество новых средств и улучшений в сравнении с предшествующими инфраструктурами. В дополнение к унификации инфраструктур и контроллеров появились следующие усовершенствования и инновации:
• встроенное внедрение зависимостей:
• система конфигурации, основанная на среде и готовая к взаимодействию с облачными технологиями;
• легковесный, высокопроизводительный и модульный конвейер запросов HTTP.
• вся инфраструктура основана на мелкозернистых пакетах NuGet;
• интеграция современных инфраструктур и рабочих потоков разработки для клиентской стороны;
• введение вспомогательных функций дескрипторов;
• введение компонентов представлений;
• огромные улучшения в плане производительности.
Встроенное внедрение зависимостей
Внедрение зависимостей (dependency injection — DI) представляет собой механизм для поддержки слабой связанности между объектами. Вместо создания зависимых объектов напрямую или передачи специфических реализаций в классы и/или методы параметры определяются как интерфейсы. Таким образом, классам или методам и классам могут передаваться любые реализации интерфейсов, что разительно увеличивает гибкость приложения.
Поддержка DI — один из главных принципов, заложенных в переписанную версию ASP.NET Core. Все службы конфигурации и промежуточного ПО через внедрение зависимостей получает не только класс Startup (рассматриваемый позже в главе); ваши специальные классы могут (и должны) быть добавлены в контейнер DI с целью внедрения в другие части приложения. При конфигурировании элемента в контейнере ASP.NET Core DI доступны три варианта времени существования, кратко описанные в табл. 29.8.
Элементы в контейнере DI могут быть внедрены внутрь конструкторов и методов классов, а также в представления Razor.
На заметку! Если вы хотите использовать другой контейнер DI, то имейте в виду, что инфраструктура ASP.NET Core проектировалась с учетом такой гибкости. Чтобы узнать, как подключить другой контейнер DI, обратитесь в документацию по ссылке https://docs.microsoft.com/ru-ru/aspnet/core/fundamentals/dependency-injection.
Осведомленность о среде
Осведомленность приложений ASP. NET Core об их среде выполнения включает переменные среды хоста и местоположения файлов через экземпляр реализации IWebHostEnvironment. В табл. 29.9 описаны свойства, доступные в этом интерфейсе.
Помимо доступа к важным файловым путям интерфейс IWebHostEnvironment применяется для выяснения среды времени выполнения.
Выяснение среды времени выполнения
Инфраструктура ASP.NET Core автоматически читает значение переменной среды по имени ASPNETCORE_ENVIRONMENT, чтобы установить среду времени выполнения. Если переменная ASPNETCORE_ENVIRONMENT не установлена, тогда ASP.NET Core устанавливает ее значение в Production (производственная среда). Установленное значение доступно через свойство EnvironmentName интерфейса IWebHostEnvironment.
(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})
Во время разработки приложений ASP.NET Core переменная ASPNETCORE_ENVIRONMENT обычно устанавливается с использованием файла настроек или командной строки. Последовательно идущие среды (подготовительная, производственная и т.д.), как правило, задействуют стандартные переменные среды операционной системы.
Вы можете применять для среды любое имя или одно из трех имен, которые предоставляются статическим классом Environments.
public static class Environments
{
public static readonly string Development = "Development"; // среда разработки
public static readonly string Staging = "Staging"; // подготовительная среда
public static readonly string Production = "Production"; // производственная среда
}
Класс HostEnvironmentEnvExtensions предлагает расширяющие методы на IHostEnvironment для работы со свойством имени среды, которые описаны в табл. 29.10.
Ниже перечислены некоторые примеры использования настройки среды:
• выяснение, какие конфигурационные файлы загружать:
• установка параметров отладки, ошибок и ведения журнала:
• загрузка файлов JavaScript и CSS, специфичных для среды.
Вы увидите все это в действии при построении приложений AutoLot.Api и AutoLot.Mvc в последующих двух главах.
Конфигурация приложений
В предшествующих версиях ASP.NET для конфигурирования служб и приложений применялся файл web.config, и разработчики получали доступ к конфигурационным настройкам через класс System.Configuration. Разумеется, помещение в файл web.config всех конфигурационных настроек для сайта, а не только специфичных для приложения, делало его (потенциально) запутанной смесью.
В ASP.NET Core была введена значительно более простая система конфигурации. По умолчанию она основывается на простых файлах JSON, которые хранят конфигурационные настройки в виде пар "имя-значение". Стандартный файл для конфигурации называется appsettings.json. Начальная версия файла appsettings.json (созданная шаблонами для веб-приложения ASP.NET Core и службы API) просто содержит конфигурационную информацию для регистрации в журнале, а также настройку для ограничения хостов:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",