Szybki start: dodawanie flag funkcji do aplikacji usługi Azure Functions
W tym przewodniku Szybki start utworzysz projekt kodu języka C# usługi Azure Functions i użyjesz w nim flag funkcji. Zarządzanie funkcjami z aplikacja systemu Azure Configuration służy do centralnego przechowywania wszystkich flag funkcji i kontrolowania ich stanów.
Biblioteki zarządzania funkcjami platformy .NET rozszerzają platformę z obsługą flag funkcji. Te biblioteki są oparte na systemie konfiguracji platformy .NET. Integrują się z usługą App Configuration za pośrednictwem dostawcy konfiguracji platformy .NET.
Uwaga
Ten artykuł obsługuje obecnie tylko aplikacje funkcji w procesie języka C#, które działają na platformie .NET 6.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz je bezpłatnie.
- Magazyn usługi App Configuration. Utwórz magazyn.
- Program Visual Studio 2019 z pakietem roboczym Programowanie na platformie Azure.
Dodawanie flagi funkcji
Dodaj flagę funkcji o nazwie Beta do sklepu App Configuration i pozostaw pole Etykieta i Opis z ich wartościami domyślnymi. Aby uzyskać więcej informacji na temat dodawania flag funkcji do magazynu przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia, przejdź do tematu Tworzenie flagi funkcji.
Tworzenie projektu usługi Functions
Szablon projektu usługi Azure Functions w programie Visual Studio tworzy projekt biblioteki klas języka C#, który można opublikować w aplikacji funkcji na platformie Azure. Za pomocą aplikacji funkcji można grupować funkcje jako jednostkę logiczną, aby ułatwić zarządzanie, wdrażanie, skalowanie i udostępnianie zasobów.
Z menu programu Visual Studio wybierz pozycję Plik>nowy>projekt.
W obszarze Tworzenie nowego projektu wprowadź funkcje w polu wyszukiwania, wybierz szablon usługi Azure Functions , a następnie wybierz pozycję Dalej.
W obszarze Konfigurowanie nowego projektu wprowadź nazwę projektu, a następnie wybierz pozycję Utwórz. Nazwa aplikacji funkcji musi być prawidłową nazwą przestrzeni nazw C#, dlatego nie należy używać znaków podkreślenia, łączników ani znaków innych niż alfanumeryczne.
W przypadku ustawień tworzenia nowej aplikacji usługi Azure Functions użyj wartości w poniższej tabeli:
Ustawienie Wartość Opis Wersja platformy .NET .NET 6 Ta wartość tworzy projekt funkcji, który jest uruchamiany w procesie z wersją 4.x środowiska uruchomieniowego usługi Azure Functions. Aby uzyskać więcej informacji, zobacz Omówienie wersji środowiska uruchomieniowego usługi Azure Functions. Szablon funkcji Wyzwalacz HTTP Ta wartość tworzy funkcję wyzwalaną przez żądanie HTTP. Konto magazynu (AzureWebJobsStorage) Emulator magazynu Ponieważ aplikacja funkcji na platformie Azure wymaga konta magazynu, jest przypisywana lub tworzona podczas publikowania projektu na platformie Azure. Wyzwalacz HTTP nie używa konta usługi Azure Storage parametry połączenia; wszystkie inne typy wyzwalaczy wymagają prawidłowego konta usługi Azure Storage parametry połączenia. Poziom autoryzacji Anonimowy Utworzona funkcja może zostać wyzwolona przez dowolnego klienta bez podawania klucza. To ustawienie autoryzacji ułatwia testowanie nowej funkcji. Aby uzyskać więcej informacji na temat kluczy i autoryzacji, zobacz Authorization keys and HTTP and webhook bindings (Klucze autoryzacji oraz powiązania http i element webhook).
Upewnij się, że ustawiono poziom autoryzacji na Anonimowy. Jeśli wybierzesz domyślny poziom funkcji, musisz przedstawić klucz funkcji w żądaniach dostępu do punktu końcowego funkcji.
Wybierz pozycję Utwórz , aby utworzyć projekt funkcji i funkcję wyzwalacza HTTP.
Nawiązywanie połączenia z magazynem usługi App Configuration
Ten projekt będzie używać wstrzykiwania zależności w usłudze Azure Functions platformy .NET. Dodaje aplikacja systemu Azure Configuration jako dodatkowe źródło konfiguracji, w którym są przechowywane flagi funkcji.
Kliknij projekt prawym przyciskiem myszy i wybierz polecenie Zarządzaj pakietami NuGet. Na karcie Przeglądaj wyszukaj i dodaj następujące pakiety NuGet do projektu.
- Microsoft.Extensions.Configuration.AzureAppConfiguration w wersji 4.1.0 lub nowszej
- Microsoft.FeatureManagement w wersji 2.2.0 lub nowszej
- Microsoft.Azure.Functions.Extensions w wersji 1.1.0 lub nowszej
Dodaj nowy plik, Startup.cs, przy użyciu następującego kodu. Definiuje klasę o nazwie
Startup
, która implementuje klasę abstrakcyjnąFunctionsStartup
. Atrybut zestawu służy do określania nazwy typu używanego podczas uruchamiania usługi Azure Functions.using System; using Microsoft.Azure.Functions.Extensions.DependencyInjection; using Microsoft.Extensions.Configuration; using Microsoft.FeatureManagement; [assembly: FunctionsStartup(typeof(FunctionApp.Startup))] namespace FunctionApp { class Startup : FunctionsStartup { public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder) { } public override void Configure(IFunctionsHostBuilder builder) { } } }
Zaktualizuj metodę
ConfigureAppConfiguration
i dodaj dostawcę konfiguracji aplikacja systemu Azure jako dodatkowe źródło konfiguracji, wywołując metodęAddAzureAppConfiguration()
.Metoda
UseFeatureFlags()
nakazuje dostawcy ładowanie flag funkcji. Wszystkie flagi funkcji mają domyślny czas wygaśnięcia pamięci podręcznej 30 sekund przed ponownym sprawdzeniem zmian. Interwał wygaśnięcia można zaktualizować, ustawiającFeatureFlagsOptions.CacheExpirationInterval
właściwość przekazanąUseFeatureFlags
do metody .public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder) { builder.ConfigurationBuilder.AddAzureAppConfiguration(options => { options.Connect(Environment.GetEnvironmentVariable("ConnectionString")) .Select("_") .UseFeatureFlags(); }); }
Napiwek
Jeśli nie chcesz, aby żadna konfiguracja inna niż flagi funkcji zostały załadowane do aplikacji, możesz wywołać metodę
Select("_")
, aby załadować tylko nieistniejący fikcyjny klucz"_"
. Domyślnie wszystkie wartości klucza konfiguracji w magazynie usługi App Configuration zostaną załadowane, jeśli nieSelect
zostanie wywołana żadna metoda.Zaktualizuj metodę
Configure
w celu udostępnienia usług aplikacja systemu Azure Configuration services i menedżera funkcji za pomocą wstrzykiwania zależności.public override void Configure(IFunctionsHostBuilder builder) { builder.Services.AddAzureAppConfiguration(); builder.Services.AddFeatureManagement(); }
Otwórz Function1.cs i dodaj następujące przestrzenie nazw.
using System.Linq; using Microsoft.FeatureManagement; using Microsoft.Extensions.Configuration.AzureAppConfiguration;
Dodaj konstruktor używany do uzyskiwania
_featureManagerSnapshot
wystąpień iIConfigurationRefresherProvider
poprzez wstrzykiwanie zależności. Z poziomuIConfigurationRefresherProvider
programu można uzyskać wystąpienie klasyIConfigurationRefresher
.private readonly IFeatureManagerSnapshot _featureManagerSnapshot; private readonly IConfigurationRefresher _configurationRefresher; public Function1(IFeatureManagerSnapshot featureManagerSnapshot, IConfigurationRefresherProvider refresherProvider) { _featureManagerSnapshot = featureManagerSnapshot; _configurationRefresher = refresherProvider.Refreshers.First(); }
Zaktualizuj metodę
Run
, aby zmienić wartość wyświetlanego komunikatu w zależności od stanu flagi funkcji.Metoda
TryRefreshAsync
jest wywoływana na początku wywołania funkcji w celu odświeżenia flag funkcji. Jeśli przedział czasu wygaśnięcia pamięci podręcznej nie zostanie osiągnięty, będzie to operacja bez operacji. Usuń operator,await
jeśli wolisz odświeżyć flagi funkcji bez blokowania bieżącego wywołania usługi Functions. W takim przypadku późniejsze wywołania usługi Functions otrzymają zaktualizowaną wartość.[FunctionName("Function1")] public async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); await _configurationRefresher.TryRefreshAsync(); string message = await _featureManagerSnapshot.IsEnabledAsync("Beta") ? "The Feature Flag 'Beta' is turned ON" : "The Feature Flag 'Beta' is turned OFF"; return (ActionResult)new OkObjectResult(message); }
Lokalne testowanie funkcji
Ustaw zmienną środowiskową o nazwie ConnectionString, gdzie wartość jest wartością parametry połączenia pobraną wcześniej w magazynie usługi App Configuration w obszarze Klucze dostępu. Jeśli używasz wiersza polecenia systemu Windows, uruchom następujące polecenie i uruchom ponownie wiersz polecenia, aby zezwolić na wprowadzenie zmian:
setx ConnectionString "connection-string-of-your-app-configuration-store"
Jeśli używasz programu Windows PowerShell, uruchom następujące polecenie:
$Env:ConnectionString = "connection-string-of-your-app-configuration-store"
Jeśli używasz systemu macOS lub Linux, uruchom następujące polecenie:
export ConnectionString='connection-string-of-your-app-configuration-store'
Naciśnij F5, aby przetestować funkcję. Po wyświetleniu monitu zaakceptuj żądanie programu Visual Studio dotyczące pobrania i zainstalowania zestawu narzędzi Azure Functions Core (CLI). Może być również konieczne włączenie wyjątku zapory, aby narzędzia mogły obsługiwać żądania HTTP.
Skopiuj adres URL funkcji z danych wyjściowych środowiska uruchomieniowego usługi Azure Functions.
Wklej adres URL żądania HTTP w pasku adresu przeglądarki. Na poniższej ilustracji przedstawiono odpowiedź wskazującą, że flaga funkcji Beta jest wyłączona.
Zaloguj się w witrynie Azure Portal. Wybierz pozycję Wszystkie zasoby i wybierz utworzony magazyn App Configuration.
Wybierz pozycję Menedżer funkcji i zmień stan klucza beta na Wł.
Odśwież przeglądarkę kilka razy. Po przejściu przedziału czasu interwału odświeżania strona zmieni się, aby wskazać, że flaga funkcji Beta jest włączona, jak pokazano na poniższej ilustracji.
Uwaga
Przykładowy kod używany w tym samouczku można pobrać z repozytorium GitHub aplikacja systemu Azure Configuration.
Czyszczenie zasobów
Jeśli nie chcesz nadal korzystać z zasobów utworzonych w tym artykule, usuń utworzoną tutaj grupę zasobów, aby uniknąć naliczania opłat.
Ważne
Usunięcie grupy zasobów jest nieodwracalne. Grupa zasobów i wszystkie zasoby w niej są trwale usuwane. Upewnij się, że nie usuniesz przypadkowo nieprawidłowej grupy zasobów ani zasobów. Jeśli zasoby dla tego artykułu zostały utworzone w grupie zasobów zawierającej inne zasoby, które chcesz zachować, usuń każdy zasób oddzielnie z odpowiedniego okienka zamiast usuwać grupę zasobów.
- Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.
- W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
- Na liście wyników wybierz nazwę grupy zasobów, aby wyświetlić przegląd.
- Wybierz pozycję Usuń grupę zasobów.
- Zobaczysz prośbę o potwierdzenie usunięcia grupy zasobów. Wprowadź nazwę grupy zasobów, aby potwierdzić, a następnie wybierz pozycję Usuń.
Po kilku chwilach grupa zasobów i wszystkie jej zasoby zostaną usunięte.
Następne kroki
W tym przewodniku Szybki start utworzono flagę funkcji i użyto jej w usłudze Azure Functions.
Aby włączyć funkcję zarządzania funkcjami dla innych typów aplikacji, przejdź do następujących samouczków.
Aby dowiedzieć się więcej na temat zarządzania flagami funkcji w usłudze aplikacja systemu Azure Configuration, przejdź do następującego samouczka.
Aby uruchomić pełną funkcję biblioteki zarządzania funkcjami platformy .NET, przejdź do następującego dokumentu.