Рейтинговые книги
Читем онлайн Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 371 372 373 374 375 376 377 378 379 ... 407
помощью информации заголовка в сообщение ответа 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.

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

      "Microsoft.Hosting.Lifetime": "Information"

    }

  },

  "AllowedHosts": "*"

}

Шаблон также создает файл appsettings.Development.json. Система конфигурации работает в сочетании с осведомленностью о среде времени выполнения, чтобы загружать дополнительные конфигурационные файлы на основе среды времени выполнения. Цель достигается инструктированием системы конфигурации о необходимости загрузки файла с именем appsettings.{имя_среды}.json после файла appSettings.json. В случае запуска приложения в среде разработки после файла начальных настроек загружается файл appsettings.Development.json. Если запуск происходит в подготовительной среде, тогда загружается файл appsettings.Staging.json. Важно отметить, что при загрузке более одного файла любые настройки, присутствующие в нескольких файлах, переопределяются настройками из последнего загруженного файла; они не являются аддитивными. Все конфигурационные настройки получаются через экземпляр реализации IConfiguration, доступный посредством системы внедрения зависимостей ASP.NET Core.

Извлечение настроек

После построения конфигурации к настройкам можно обращаться с использованием традиционного семейства методов GetXXX(), таких как GetSection(), GetValue() и т.д.:

Configuration.GetSection("Logging")

Также доступно сокращение для получения строк подключения:

Configuration.GetConnectionString("AutoLot")

Дополнительные возможности конфигурации будут повсеместно применяться в оставшемся материале книги.

Развертывание приложений ASP.NET Core

Приложения ASP.NET предшествующих версий могли развертываться только на серверах Windows с использованием IIS. Инфраструктуру ASP.NET Core можно разворачивать под управлением многочисленных операционных систем многими способами, в том числе и вне веб-сервера. Ниже перечислены высокоуровневые варианты:

• на сервере Windows (включая Azure) с применением IIS;

• на сервере Windows (включая службы приложений Azure) вне IIS;

• на сервере Linux с использованием Apache или NGINX;

• под управлением Windows или Linux в контейнере Docker.

Подобная гибкость позволяет организациям выбирать платформу развертывания, которая имеет набольший смысл для организации, включая популярные модели

1 ... 371 372 373 374 375 376 377 378 379 ... 407
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен бесплатно.

Оставить комментарий