Общие сведения о конфигурации (интерфейсы IConfiguration и IConfigurationBuilder)

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

Источники и поставщики конфигурации

Для конфигурации приложения ASP.NET Core мы можем использовать следующие источники конфигурации:

  1. JSON-файлы, XML-файлы и другие файлы
  2. переменные среды
  3. хранилище ключей Azure;
  4. аргументы командной строки;
  5. пользовательские поставщики конфигурации;
  6. объекты .NET в памяти;

В терминах C# каждый источник конфигурации представлен в ASP.NET Core классом, реализующим интерфейс IConfigurationSource.

Под каждый вид источника конфигурации в ASP.NET Core имеются или разрабатываются самостоятельно поставщики конфигурации (наследники класса ConfigurationProvider), в которых все настройки приложения хранятся в парах вида «ключ-значение». При этом работа с настройками приложения ASP.NET Core построена таким образом, что нам, в большинстве случаев, не требуется знать ни источник конфигурации, ни то, какой провайдер конфигурации был задействован для получения той или иной настройки приложения.

Для работы с источниками и провайдерами конфигурации в ASP.NET Core используется свойство Configuration объекта WebApplicationBuilder. Это свойство представлено объектом типа ConfigurationManager.

Класс ConfigurationManager реализует сразу ряд интерфейсов и его описание выглядит следующим образом:

public sealed class ConfigurationManager : IDisposable, IConfigurationManager, IConfigurationRoot

В свою очередь, если посмотреть на интерфейсы IConfigurationManager и IConfigurationRoot, то можно увидеть, что эти интерфейсы наследуются от других интерфейсов, таких как IConfiguration и IConfigurationBuilder. Рассмотрим кратко то, какие свойства и методы предоставляют эти интерфейсы.

Интерфейс IConfiguration

Этот интерфейс предоставляет доступ к набору свойств конфигурации приложения в виде пар «Ключ – Значение». Именно с объектами, реализующими этот интерфейс мы и будем работать в дальнейшем чаще всего для того, чтобы получить или добавить настройку в приложении.

Для нас работа с конфигурацией приложения выглядит следующим образом:

То есть, какой бы источник конфигурации не был задействован — мы в любом случае обратимся к интерфейсу IConfiguration для получения значений настройки в виде пары «ключ-значение».  У IConfiguration определены методы и свойства, представленные в таблице

Название Тип/тип возвращаемого методом значения Описание
Свойства IConfiguration
Item[String] String Предоставляет доступ к настройке.
Методы IConfiguration
GetChildren() IEnumerable<IConfigurationSection> Возвращает непосредственных потомков узла конфигурации
GetSection (string key) IConfigurationSection Возвращает подраздел конфигурации с указанным ключом
GetReloadToken() IChangeToken Метод можно использовать для получения маркера изменения, уведомляющего о перезагрузке конфигурации

Интерфейс IConfigurationBuilder

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

Название Тип/тип возвращаемого методом значения Описание
Свойства IConfigurationBuilder
Properties IDictionary<String,Object> Возвращает коллекцию ключей и значений, которую можно использовать для обмена данными между IConfigurationBuilder и зарегистрированными поставщиками конфигурации
Sources IList<IConfigurationSource> Возвращает список источников конфигурации
Методы IConfigurationBuilder
Add (IConfigurationSource source) IConfigurationBuilder Добавляет новый источник конфигурации.
Build () IConfigurationRoot Создает IConfiguration с ключами и значениями на основе набора источников, зарегистрированных в Sources

Для нас ценность этого интерфейса заключается, в первую очередь, в методах его расширения. Ниже, в таблице представлены лишь некоторые из методов расширения IConfigurationBuilder, которые могут использоваться для работы с конфигурацией приложения ASP.NET Core

Название Описание
AddCommandLine(IConfigurationBuilder, String[]) Добавляет CommandLineConfigurationProvider, считывающий значения конфигурации из командной строки
AddEnvironmentVariables(IConfigurationBuilder, String) Добавляет IConfigurationProvider, считывающий значения конфигурации из переменных среды с указанным префиксом.
AddIniFile(IConfigurationBuilder, String) Добавляет поставщик конфигурации INI по пути path в builder.
AddJsonFile(IConfigurationBuilder, String) Добавляет поставщик конфигурации JSON по пути path в builder.
AddXmlFile(IConfigurationBuilder, String) Добавляет поставщик конфигурации XML по пути path в builder

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

Итого

Для конфигурации приложения ASP.NET Core Web API могут использоваться различные источники, такие как файлы, аргументы командной строки, объекты .NET в памяти и так далее. В любом случае, какой бы источник конфигурации не использовался, для нас все настройки приложения будут представлять из себя пары «ключ — значение», которые мы можем получить, используя интерфейс IConfiguration. В свою очередь, добавление новых источников конфигурации производится с использованием методов расширения IConfigurationBuilder.

Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии