Литмир - Электронная Библиотека
A
A

Фильтры результатов

 Фильтры результатов завершают выполнение экземпляра реализации

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.

Язык программирования C#9 и платформа .NET5 - _275.png

Элементы в контейнере DI могут быть внедрены внутрь конструкторов и методов классов, а также в представления Razor.

На заметку! Если вы хотите использовать другой контейнер DI, то имейте в виду, что инфраструктура ASP.NET Core проектировалась с учетом такой гибкости. Чтобы узнать, как подключить другой контейнер DI, обратитесь в документацию по ссылке

https://docs.microsoft.com/ru-ru/aspnet/core/fundamentals/dependency-injection
.

Осведомленность о среде

Осведомленность приложений ASP. NET Core об их среде выполнения включает переменные среды хоста и местоположения файлов через экземпляр реализации

IWebHostEnvironment
. В табл. 29.9 описаны свойства, доступные в этом интерфейсе.

Язык программирования C#9 и платформа .NET5 - _276.png

Помимо доступа к важным файловым путям интерфейс

IWebHostEnvironment
применяется для выяснения среды времени выполнения.

Выяснение среды времени выполнения

Инфраструктура ASP.NET Core автоматически читает значение переменной среды по имени

ASPNETCORE_ENVIRONMENT
, чтобы установить среду времени выполнения. Если переменная
ASPNETCORE_ENVIRONMENT
не установлена, тогда ASP.NET Core устанавливает ее значение в
Production
(производственная среда). Установленное значение доступно через свойство
EnvironmentName
интерфейса
IWebHostEnvironment
.

Во время разработки приложений 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.

Язык программирования C#9 и платформа .NET5 - _277.png

Ниже перечислены некоторые примеры использования настройки среды:

• выяснение, какие конфигурационные файлы загружать:

• установка параметров отладки, ошибок и ведения журнала:

• загрузка файлов 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",

582
{"b":"847442","o":1}