Упражнение. Реализация параметров конфигурации в экземпляре Конфигурация приложений Azure

Завершено

Новое требование к приложению теперь позволяет флагу функции управлять скидкой для продукта. В этом упражнении показано, как это сделать.

  • Добавьте параметр конфигурации в экземпляр Конфигурация приложений Azure.
  • Добавьте код для использования нового параметра для скидки цен на продукты.
  • Создайте и протестируйте приложение.

Добавление параметра конфигурации в хранилище Конфигурация приложений

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

  1. На другой вкладке браузера войдите на портал Azure с той же учетной записью и каталогом, что использовались для Azure CLI.
  2. Используйте поле поиска, чтобы найти и открыть ресурс службы "Конфигурация приложений" с префиксом eshop-app-features.
  3. В разделе "Операции" выберите обозреватель конфигурации.
  4. В верхнем меню выберите +Создать и выберите "Ключ-значение".
  5. В текстовом поле "Ключ" введите eShopLite__Store__DiscountPercent.
  6. В текстовом поле "Значение " введите 0.8.
  7. Выберите Применить.

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

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

  1. Откройте файл Store/Components/Pages/Products.razor в Visual Studio Code.

  2. @code В разделе добавьте следующую переменную, чтобы сохранить состояние флага функции:

    private decimal discountPercentage;  
    
  3. В методе OnInitializedAsync добавьте следующий код, чтобы получить значение параметра конфигурации:

    if (saleOn) {
      discountPercentage = Convert.ToDecimal(Configuration.GetSection("eShopLite__Store__DiscountPercent").Value);
    }
    

    Теперь метод должен выглядеть следующим образом:

    protected override async Task OnInitializedAsync()
    {
        saleOn = await FeatureManager.IsEnabledAsync("SeasonalDiscount");
    
        // Simulate asynchronous loading to demonstrate streaming rendering
        products = await ProductService.GetProducts();
    
        if (saleOn) {
          discountPercentage = Convert.ToDecimal(Configuration.GetSection("eShopLite__Store__DiscountPercent").Value);
        }
    }
    

    Приведенный выше код использует объект Configuration для получения значения параметра конфигурации. Значение хранится в переменной discountPercentage как десятичное.

Отображение скидок на цены

Чтобы отобразить скидки, необходимо обновить страницу продукта. Выполните следующие действия:

  1. Замените <td>@product.Price</td> следующим кодом:

    <td>
      @if (saleOn) {
        <strike>@(product.Price)</strike><br>
        @((product.Price * discountPercentage).ToString("#.##"))
      } else {
        @product.Price
      }
    </td>
    

    Приведенный выше код проверка, если включена сезонная продажа. Если она включена, исходная цена отображается с забастовкой через, а скидка отображается под ней. Если сезонная продажа не включена, отображается исходная цена.

Создание приложения

  1. Убедитесь, что вы сохранили все изменения и находитесь в каталоге dotnet-feature-flags . В терминале выполните следующую команду:

    dotnet publish /p:PublishProfile=DefaultContainer 
    
  2. Запустите приложение с помощью Docker:

    docker compose up
    

Проверка функции скидки по цене

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

  1. Перейдите на вкладку "ПОРТЫ" , а затем справа от локального адреса для порта переднего плана выберите значок глобуса. В браузере откроется новая вкладка на домашней странице.
  2. Выберите Продукты.

Если вы используете Visual Studio Code локально, откройте http://localhost:32000/productsего.

A screenshot of the application showing discounted prices.

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

  1. В портал Azure перейдите к префиксу ресурса Конфигурация приложений Azure с eshop-app-featuresпрефиксом .

  2. В разделе "Операции" выберите диспетчер компонентов.

  3. Выберите переключатель "СезонныйDiscount", чтобы отключить эту функцию.

    A screenshot showing the Azure portal page for App Configuration. The SeasonalDiscount is disabled.

  4. В браузере вернитесь в приложение.

  5. Выберите домашнюю страницу, а затем страницу "Продукты".

    A screenshot showing the eShopLite app without a sales banner.

Для очистки кэша может потребоваться до 30 секунд. Если баннер продаж по-прежнему отображается, подождите несколько секунд и снова обновите страницу.