Ключи и значения

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

Ключи

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

Ниже приведен пример имен ключей, структурированных в иерархии на основе служб компонентов:

    AppName:Service1:ApiEndpoint
    AppName:Service2:ApiEndpoint

Использование данных конфигурации в разных исполняющих средах может диктовать более или менее строгие схемы именования пар "ключ-значение". Например, на платформе Spring Cloud Java определены ресурсы Environment, передающие параметры в приложение Spring. Эти ресурсы параметризованы переменными, включающими имя приложения и профиль. Ключи для конфигураций, имеющих отношение к Spring Clould, обычно начинаются с этих двух элементов с разделителем.

Ключи хранятся в Конфигурации приложений в формате строк Юникода с учетом регистра. Например, app1 и App1 в хранилище Конфигурации приложений будут разными ключами. Учитывайте это при использовании параметров конфигурации в приложении, так как некоторые платформы не учитывают регистр для ключей конфигурации. Не рекомендуется использовать регистр для различения ключей.

В именах ключей можно использовать любой символ Юникода, за исключением %. Именем ключа также не может быть . или ... На размер каждой пары "ключ-значение" налагается общее ограничение в 10 КБ. Сюда входят все символы ключа, значения и связанные с ними необязательные атрибуты. В пределах этого ограничения можно создать многоуровневую иерархию ключей.

Проектирование пространства имен ключей

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

  • Более удобен для чтения. Разделители в иерархическом имени ключа выполняют роль пробелов в предложении. Слова в этих предложениях разделены пробелами.
  • Более удобен для управления. Иерархия имен ключей объединяет данные конфигурации в логические группы.
  • Более удобен для использования. Гораздо проще применить в запросе сопоставление иерархических имен ключей с шаблоном, чтобы извлечь только нужную часть данных конфигурации. Кроме того, многие новые платформы программирования предоставляют встроенную поддержку для иерархической конфигурации данных, что позволяет приложениям использовать определенные наборы данных конфигурации.

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

Пометка ключей

В Конфигурации приложений пары "ключ — значение" можно дополнять атрибутом label (метка). Метки позволяют различать пары "ключ — значение" в пределах одного ключа. Например, ключ app1 с метками A и B создает в хранилище Конфигурации приложения два разных ключа. По умолчанию пара "ключ-значение" не имеет метки. Чтобы явно ссылаться на пару "ключ-значение" без метки, используйте \0 (URL-адрес в кодировке %00).

Метка обеспечивает удобное создание вариантов ключа. Метки обычно используется для указания нескольких сред для одного ключа.

    Key = AppName:DbEndpoint & Label = Test
    Key = AppName:DbEndpoint & Label = Staging
    Key = AppName:DbEndpoint & Label = Production

Управление версиями для пар "ключ-значение"

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

Примечание

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

Запрос пар "ключ-значение"

Каждая пара "ключ — значение" уникально идентифицируется по сочетанию ключа и метки (которая может принимать значение \0). Запрос пар "ключ-значение" из хранилища службы "Конфигурация приложений" выполняется по шаблонам. Хранилище службы "Конфигурация приложений" возвращает все пары "ключ-значение", которые соответствуют указанному шаблону, включая все относящиеся к ним значения и атрибуты. Используйте следующие шаблоны ключей в вызовах к REST API Конфигурации приложений:

Ключ Описание
key не указан или имеет значение key=* Совпадает со всеми ключами.
key=abc Точно соответствует имени abc ключа.
key=abc* Соответствует именам ключей, начинающимся с abc.
key=abc,xyz Соответствует именам abc ключей или xyz. Ограничено пятью CSV-файлами.

Кроме того, вы можете добавить следующие шаблоны меток:

Метка Описание
label не указан или имеет значение label=* Совпадает с любой меткой, включая \0.
label=%00 Совпадает с меткой \0.
label=1.0.0 Точно соответствует метки 1.0.0 .
label=1.0.* Соответствует меткам, начинающимся с 1.0..
label=%00,1.0.0 Соответствует меткам \0 или 1.0.0, ограничено пятью CVS.

Примечание

*, , и \ являются зарезервированными знаками в запросах. Если в именах ключей или метках используется зарезервированный знак, для него необходимо указывать escape-последовательность с помощью \{Reserved Character} в запросах.

Значения

Присваиваемые ключам значения также являются строками Юникода. Для значений можно использовать любые символы Юникода.

Использование типа контента

Каждая пара "ключ-значение" в службе "Конфигурация приложений" имеет атрибут типа контента. При необходимости этот атрибут можно использовать для хранения сведений о типе значения в паре "ключ-значение", что позволяет приложению правильно обрабатывать его. Для типа контента можно использовать любой формат. В службе "Конфигурация приложений" используются типы мультимедиа (также известны как типы MIME) для встроенных типов данных, таких как флаги возможностей, ссылки на Key Vault и пары "ключ-значение" JSON.

Дальнейшие действия