Ćwiczenie — wdrożenie ustawień konfiguracji w instancji Azure App Configuration

Ukończone

Nowe wymaganie w aplikacji dotyczy wprowadzenia flagi funkcji do kontrolowania rabatu na produkt. W tym ćwiczeniu pokazano, jak to zrobić.

  • Dodaj ustawienie konfiguracji w instancji usługi Azure App Configuration.
  • Dodaj kod, aby użyć nowego ustawienia w celu rabatu cen produktów.
  • Skompiluj i przetestuj aplikację.

Dodaj ustawienie konfiguracji do sklepu App Configuration

Teraz w usłudze Azure App Configuration utwórz nową parę klucz-wartość, aby przechowywać procentowy rabat. Wykonaj następujące kroki:

  1. Na innej karcie przeglądarki zaloguj się do portalu Azure przy użyciu takiego samego konta i katalogu jak interfejs wiersza polecenia platformy Azure.
  2. Użyj pola wyszukiwania, aby znaleźć i otworzyć zasób usługi App Configuration poprzedzony prefiksem eshop-app-features.
  3. W sekcji Operations wybierz Configuration explorer.
  4. W górnym menu wybierz pozycję + Utwórz i wybierz pozycję Klucz-wartość.
  5. W polu tekstowym klucz wprowadź eShopLite__Store__DiscountPercent.
  6. W polu tekstowym Wartość wprowadź 0,8.
  7. Wybierz pozycję Zastosuj.

Dodawanie kodu do używania nowego ustawienia konfiguracji

Aby można było użyć nowego ustawienia konfiguracji, należy zaktualizować stronę produktu. Wykonaj następujące kroki:

  1. W programie Visual Studio Code otwórz plik Store/Components/Pages/Products.razor.

  2. W sekcji @code dodaj następującą zmienną, aby przechowywać stan flagi funkcji:

    private decimal discountPercentage;  
    
  3. W metodzie OnInitializedAsync dodaj następujący kod, aby pobrać wartość ustawienia konfiguracji:

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

    Metoda powinna teraz wyglądać podobnie do następującego kodu:

    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);
        }
    }
    

    Powyższy kod używa obiektu Configuration w celu pobrania wartości ustawienia konfiguracji. Wartość jest przechowywana w zmiennej discountPercentage jako dziesiętna.

Wyświetlanie obniżonych cen

Strona produktu musi zostać zaktualizowana, aby wyświetlić obniżone ceny. Wykonaj następujące kroki:

  1. Zastąp <td>@product.Price</td> następującym kodem:

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

    Powyższy kod sprawdza, czy sprzedaż sezonowa jest włączona. Jeśli ta opcja jest włączona, oryginalna cena jest wyświetlana za pomocą przekreślenia, a cena obniżona jest wyświetlana poniżej. Jeśli sprzedaż sezonowa nie jest włączona, zostanie wyświetlona oryginalna cena.

Kompilowanie aplikacji

  1. Upewnij się, że wszystkie zmiany zostały zapisane i znajdują się w katalogu dotnet-feature-flags . W terminalu uruchom następujące polecenie:

    dotnet publish /p:PublishProfile=DefaultContainer 
    
  2. Uruchom aplikację przy użyciu platformy Docker:

    docker compose up
    

Testowanie funkcji rabatu cenowego

Aby sprawdzić, czy flaga funkcji działa zgodnie z oczekiwaniami w przestrzeni kodu, wykonaj następujące kroki:

  1. Przejdź do karty PORTY, a następnie po prawej stronie adresu lokalnego dla portu Front End wybierz ikonę globusa. Przeglądarka otwiera nową kartę na stronie głównej.
  2. Wybierz pozycję Produkty.

Jeśli używasz programu Visual Studio Code lokalnie, otwórz http://localhost:32000/products.

Zrzut ekranu aplikacji przedstawiający obniżone ceny.

Aby przetestować flagę funkcji, która kontroluje sprzedaż sezonową, wykonaj następujące kroki:

  1. W witrynie Azure Portal przejdź do zasobu usługi Azure App Configuration z prefiksem eshop-app-features.

  2. W sekcji Operations wybierz pozycję Feature Manager.

  3. Wybierz przełącznik SeasonalDiscount włączony, aby wyłączyć tę funkcję.

    Zrzut ekranu przedstawiający stronę witryny Azure Portal dla usługi App Configuration. Funkcja SeasonalDiscount jest wyłączona.

  4. W przeglądarce wróć do aplikacji.

  5. Wybierz stronę home, a następnie stronę Products.

    Zrzut ekranu przedstawiający aplikację eShopLite bez baneru sprzedaży.

Wyczyszczenie pamięci podręcznej może potrwać do 30 sekund. Jeśli baner sprzedaży jest nadal wyświetlany, zaczekaj kilka sekund i odśwież stronę ponownie.