Руководство. Использование динамической конфигурации в приложении .NET Framework
Данные из Конфигурации приложений можно загрузить как параметры приложения в .NET Framework. Дополнительные сведения см. в кратком руководстве. Однако, как разработано в .NET Framework, параметры приложения могут обновляться только после перезапуска приложения. Поставщик Конфигурации приложений .NET — это библиотека .NET Standard. Она поддерживает динамическое кэширование и обновление конфигурации без перезапуска приложения. Из этого учебника вы узнаете, как реализовать динамические обновления конфигурации в консольном приложении.NET Framework.
В этом руководстве описано следующее:
- настройка приложения .NET Framework на обновление конфигурации при изменении данных в хранилище службы "Конфигурация приложений";
- внедрение последней конфигурации в приложение.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте ее бесплатно.
- Хранилище Конфигурация приложений. Создайте хранилище.
- Visual Studio
- платформа .NET Framework 4.7.2 или более поздней версии
Добавление ключа-значения
Добавьте следующее ключевое значение в хранилище Конфигурация приложений и оставьте метку и тип контента со значениями по умолчанию. Дополнительные сведения о добавлении значений ключей в хранилище с помощью портал Azure или ИНТЕРФЕЙСА командной строки см. в разделе "Создание значения ключа".
Ключ | Значение |
---|---|
TestApp:Settings:Message | Данные из Конфигурация приложений Azure |
Создание консольного приложения .NET Framework
Откройте Visual Studio и выберите Создать проект.
В разделе Создание проекта с помощью фильтра найдите тип проекта Консоль и щелкните Консольное приложение (.NET Framework) с C# из списка шаблонов проекта. Нажмите кнопку Далее.
В окне Настроить новый проект введите имя проекта. В разделе Платформа выберите .NET Framework 4.7.2 или более позднюю версию. Щелкните Создать.
Перезагрузка данных из App Configuration
Щелкните проект правой кнопкой мыши и выберите Управление пакетами NuGet. На вкладке Обзор найдите и добавьте в проект последнюю версию следующих пакетов NuGet.
Microsoft.Extensions.Configuration.AzureAppConfiguration
Откройте файл Program.cs и добавьте следующие пространства имен.
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.AzureAppConfiguration;
Добавьте две переменные для хранения объектов, связанных с конфигурацией.
private static IConfiguration _configuration; private static IConfigurationRefresher _refresher;
Обновите метод
Main
, чтобы подключиться к Конфигурации приложений с помощью указанных параметров обновления.static void Main(string[] args) { var builder = new ConfigurationBuilder(); builder.AddAzureAppConfiguration(options => { options.Connect(Environment.GetEnvironmentVariable("ConnectionString")) // Load all keys that start with `TestApp:`. .Select("TestApp:*") // Configure to reload the key 'TestApp:Settings:Message' if it is modified. .ConfigureRefresh(refresh => { refresh.Register("TestApp:Settings:Message") .SetCacheExpiration(TimeSpan.FromSeconds(10)); }); _refresher = options.GetRefresher(); }); _configuration = builder.Build(); PrintMessage().Wait(); }
В методе
ConfigureRefresh
для отслеживания изменений регистрируется ключ в хранилище Конфигурации приложений. МетодRegister
имеет необязательный логический параметрrefreshAll
, который можно использовать, чтобы указать, следует ли обновлять все значения конфигурации при изменении зарегистрированного ключа. В этом примере будет обновлен только ключ TestApp:Settings:Message. МетодSetCacheExpiration
указывает минимальное время, которое должно пройти, прежде чем будет выполнен новый запрос в службу "Конфигурация приложений" для проверки на наличие каких-либо изменений конфигурации. В этом примере с целью демонстрации вы переопределяете срок действия по умолчанию (30 секунд), устанавливая 10-секундный интервал.Добавьте метод с именем
PrintMessage()
, который запускает обновление данных конфигурации из Конфигурации приложений.private static async Task PrintMessage() { Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!"); // Wait for the user to press Enter Console.ReadLine(); await _refresher.TryRefreshAsync(); Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!"); }
Вызов одного метода
ConfigureRefresh
не приведет к автоматическому обновлению конфигурации. Для активации обновления необходимо вызвать методTryRefreshAsync
из интерфейсаIConfigurationRefresher
. Это позволяет избежать запросов, отправленных в Конфигурация приложений даже если приложение неактивно. Вы можете включить вызовTryRefreshAsync
, в котором вы считаете, что ваше приложение активно. Например, при обработке входящего сообщения, заказа или итерации сложной задачи. Вызовы также могут активироваться по таймеру, если ваше приложение активно все время. В этом примере вы вызываетеTryRefreshAsync
при нажатии клавиши ВВОД. Обратите внимание, что даже в случае сбоя вызоваTryRefreshAsync
по какой-либо причине ваше приложение продолжит использовать кэшированную конфигурацию. После завершения настроенного времени истечения срока действия кэша будет предпринята еще одна попытка, после чего вызовTryRefreshAsync
будет повторно активирован с помощью действия приложения. ВызовTryRefreshAsync
является холостым до завершения заданного времени истечения срока действия кэша, поэтому его влияние на производительность минимальна, даже если вызов совершается часто.
Создание и запуск приложения локально
Задайте переменную среды с именем ConnectionString для строки подключения ключа только для чтения, полученную при создании хранилища Конфигурации приложений.
При использовании командной строки Windows выполните следующую команду:
setx ConnectionString "connection-string-of-your-app-configuration-store"
Если вы используете Windows PowerShell, выполните следующую команду:
$Env:ConnectionString = "connection-string-of-your-app-configuration-store"
Перезапустите Visual Studio, чтобы изменение вступило в силу.
Нажмите клавиши CTRL+F5, чтобы скомпилировать и запустить консольное приложение.
На портале Azure перейдите в обозреватель конфигураций хранилища Конфигурации приложений и обновите значение следующего ключа.
Ключ Значение TestApp:Settings:Message Данные из Конфигурация приложений Azure — обновлены Вернувшись в запущенное приложение, нажмите клавишу Enter, чтобы запустить обновление и вывести обновленное значение в окне командной строки или PowerShell.
Примечание.
Поскольку время истечения срока действия кэша было установлено равным 10 секундам с использованием метода
SetCacheExpiration
при указании конфигурации для операции обновления, то значение параметра конфигурации будет обновляться только в том случае, если с момента последнего обновления этого параметра прошло не менее 10 секунд.
Очистка ресурсов
Если вы не планируете в дальнейшем использовать ресурсы, созданные при работе с этой статьей, удалите созданную группу ресурсов, чтобы избежать расходов.
Внимание
Удаление группы ресурсов — процесс необратимый. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления. Будьте внимательны, чтобы случайно не удалить не те ресурсы или группу ресурсов. Если ресурсы для работы с этой статьей созданы в группе ресурсов, которая содержит другие нужные ресурсы, удалите каждый ресурс отдельно в соответствующей области ресурса, чтобы не удалять группу ресурсов.
- Войдите на портал Azure и выберитеГруппы ресурсов.
- Введите имя группы ресурсов в поле Фильтровать по имени.
- В списке результатов выберите имя группы ресурсов, чтобы просмотреть общие сведения.
- Выберите команду Удалить группу ресурсов.
- Подтвердите операцию удаления группы ресурсов. Введите имя группы ресурсов, которую необходимо удалить, и нажмите Удалить.
Через некоторое время группа ресурсов и все ее ресурсы будут удалены.
Следующие шаги
В рамках этого учебника вы включили в приложении .NET Framework динамическое обновление параметров конфигурации из службы "Конфигурация приложения". Чтобы узнать, как включить динамическую конфигурацию в веб-приложении ASP.NET (.NET Framework), перейдите к следующему учебнику:
Чтобы узнать, как с помощью удостоверения, управляемого Azure, упростить доступ к Конфигурации приложений Azure, перейдите к следующему учебнику: