Помимо поддержки базовой функциональности 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
.
Во время разработки приложений 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
в последующих двух главах.
Конфигурация приложений
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT