Ćwiczenie — tworzenie i testowanie prostej funkcji platformy Azure w środowisku lokalnym za pomocą programu Visual Studio

Ukończone

Program Visual Studio zapewnia doskonałe środowisko do tworzenia i testowania aplikacji funkcji platformy Azure. Możesz opracować funkcję platformy Azure lokalnie i sprawdzić, czy działa prawidłowo, zanim wdrożysz ją w chmurze.

W scenariuszu witryny internetowej luksusowych zegarków istnieje wymóg funkcji, która zwraca szczegółowe informacje o zegarku w przypadku numeru modelu zegarka. Zwrócone dane obejmują: producent, typ tylnej litery (solidny, przezroczysty lub wygrawerowany), ramkę, styl tarczy, wykończenie przypadku, liczbę klejnotów itd.

W tym ćwiczeniu zaimplementujesz i przetestujesz lokalnie wersję tej funkcji przy użyciu programu Visual Studio.

Uwaga

Przed rozpoczęciem tego ćwiczenia upewnij się, że masz zainstalowany program VS 2022 wraz z rozszerzeniami obciążeń Sieci Web i chmury ASP.NET i tworzenia aplikacji internetowych i tworzenia aplikacji na platformie Azure.

Tworzenie aplikacji funkcji platformy Azure

Tworzenie aplikacji funkcji platformy Azure przy użyciu szablonu usługi Azure Functions .

  1. Uruchom Instalator programu Visual Studio i na stronie startowej programu Visual Studio 2022 wybierz pozycję Modyfikuj.

  2. Upewnij się , że wybrano ASP.NET i tworzenie aplikacji internetowych oraz programowanie na platformie Azure (jeśli nie wybierze pozycji Zainstaluj podczas pobierania), a następnie wybierz pozycję Zamknij.

    Zrzut ekranu programu Visual Studio 2022 z wyróżnionymi obciążeniami tworzenia aplikacji asp dot net i azure.

  3. Na stronie startowej programu Visual Studio 2022 wybierz pozycję Uruchom.

  4. W menu Wprowadzenie wybierz pozycję Utwórz nowy projekt. Zostanie wyświetlona strona Tworzenie nowego projektu.

  5. Wyszukaj lub przewiń do szablonu usługi Azure Functions , a następnie wybierz pozycję Dalej.

    Zrzut ekranu przedstawiający stronę Tworzenie nowego projektu w programie Visual Studio 2022 z wyróżnionym szablonem usługi Azure Functions.

  6. Zostanie wyświetlona strona Konfiguruj nowy projekt. Wprowadź następujące wartości.

    Pole Wartość
    Nazwa projektu WatchPortalFunction
    Lokalizacja Wybierz lokalizację do przechowywania projektu, przechodząc do folderu lub tworząc folder na komputerze lokalnym.
    Nazwa rozwiązania Zaakceptuj element WatchPortalFunction (ustawienie domyślne).
    Umieść rozwiązanie i projekt w tym samym katalogu Niezaznaczone (NIE zaznaczono). To ustawienie zapewnia poprawną strukturę folderów dla tego modułu.

    Zrzut ekranu przedstawiający stronę Konfigurowanie nowego projektu z wyróżnioną pozycją Utwórz.

  7. Wybierz Dalej.

  8. Zostanie wyświetlona strona Dodatkowe informacje .

  9. Wybierz następujące wartości.

    Pole Wartość
    Wersja dotnet *.NET 6.0 (długoterminowa pomoc techniczna)
    Wyzwalacz funkcji Wyzwalacz HTTP
    Używanie usługi Azurite na potrzeby konta magazynu środowiska uruchomieniowego (AzureWebJobsStorage) Sprawdzane
    Włączanie platformy Docker Niezaznaczone
    Poziom autoryzacji Anonimowy

    Jeśli powiadomienie programu Visual Studio pokazuje, że aktualizacje są gotowe, wybierz pozycję Odśwież.

  10. Wybierz pozycję Utwórz.

    Zrzut ekranu przedstawiający wyzwalacze usługi Azure Functions z wyróżnionym wyzwalaczem HTTP.

    Program Visual Studio tworzy WatchPortalFunction projekt i wyświetla plik Function1.cs kodu źródłowego aplikacji usługi Functions w oknie edytora kodu. Plik zawiera kod klasy o nazwie Function1.

    Jak pokazano w poniższym przykładowym kodzie, Function1 klasa zawiera standardowy kod z szablonu wyzwalacza HTTP. Metoda Run zawiera adnotację z atrybutem [FunctionName ("Function1")]. W poprzedniej lekcji dowiedzieliśmy się, że parametry standardowy dla Run metody są obiektem zawierającym HttpRequest szczegóły żądania, które wyzwoliło funkcję, oraz wpis dziennika śledzenia na potrzeby rejestrowania informacji śledzenia.

    namespace WatchPortalFunction
    {
        public static class Function1
        {
            [FunctionName("Function1")]
            public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
            {
                log.LogInformation("C# HTTP trigger function processed a request.");
    
                string name = req.Query["name"];
    
                string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
                dynamic data = JsonConvert.DeserializeObject(requestBody);
                name = name ?? data?.name;
    
                return name != null
                    ? (ActionResult)new OkObjectResult($"Hello, {name}")
                    : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
            }
        }
    }
    

Tworzenie funkcji platformy Azure o nazwie WatchInfo

  1. W menu Widok wybierz pozycję Eksplorator rozwiązań. W oknie Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt WatchPortalFunction usługi Azure Functions, a następnie w menu kontekstowym wybierz polecenie Dodaj>nową funkcję platformy Azure.

    Zrzut ekranu przedstawiający okno Eksplorator rozwiązań. Użytkownik wybrał pozycję Dodaj —> nowa funkcja platformy Azure.

  2. W oknie Dodawanie nowego elementu — WatchPortalFunction wybierz pozycję Funkcja platformy Azure. W polu Nazwa wprowadź WatchInfo.cs, a następnie wybierz pozycję Dodaj.

    Zrzut ekranu przedstawiający okno Dodawanie nowego elementu. Wybrano szablon funkcji platformy Azure, a nowa funkcja ma nazwę WatchInfo.cs.

  3. W oknie Nowa funkcja platformy Azure — WatchInfo wybierz pozycję Wyzwalacz HTTP. Z listy rozwijanej Poziom autoryzacji wybierz pozycję Anonimowe, a następnie wybierz pozycję Dodaj.

    Zrzut ekranu przedstawiający okno Nowa funkcja platformy Azure. Wybrano wyzwalacz HTTP z uprawnieniami dostępu anonimowego.

    Program Visual Studio tworzy nową funkcję, a Run metoda jest oznaczona adnotacją za pomocą atrybutu [FunctionName("WatchInfo")] .

  4. W treści Run funkcji usuń kod po log.LogInformation wierszu. Wynik powinien wyglądać następująco.

    namespace WatchPortalFunction
    {
        public static class WatchInfo
        {
            [FunctionName("WatchInfo")]
            public static async Task<IActionResult> Run(
                [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
                ILogger log)
            {
                log.LogInformation("C# HTTP trigger function processed a request.");
            }
        }
    }
    
  5. Wstaw następujący kod w treści Run metody po log.LogInformation wierszu.

    // Retrieve the model id from the query string
    string model = req.Query["model"];
    
    // If the user specified a model id, find the details of the model of watch
    if (model != null)
    {
        // Use dummy data for this example
        dynamic watchinfo = new { Manufacturer = "abc", CaseType = "Solid", Bezel = "Titanium", Dial = "Roman", CaseFinish = "Silver", Jewels = 15 };
    
        return (ActionResult)new OkObjectResult($"Watch Details: {watchinfo.Manufacturer}, {watchinfo.CaseType}, {watchinfo.Bezel}, {watchinfo.Dial}, {watchinfo.CaseFinish}, {watchinfo.Jewels}");
    }
    return new BadRequestObjectResult("Please provide a watch model in the query string");
    

    Ten kod odczytuje model parametr z ciągu zapytania w żądaniu HTTP i zwraca szczegóły dla tego modelu zegarka. W tym przykładowym kodzie utworzyliśmy fikcyjne watchinfo dane, które są zwracane niezależnie od wartości model. Funkcja zwraca odpowiedź zawierającą te szczegóły. Lub jeśli żądanie HTTP nie zawiera ciągu zapytania, funkcja zwraca komunikat o błędzie. W rzeczywistym przykładzie użyjesz model wartości , aby wyszukać poprawną watchinfo wartość do zwrócenia.

Testowanie funkcji platformy Azure w środowisku lokalnym

  1. Na pasku poleceń wybierz pozycję Debuguj>Rozpocznij debugowanie.

    Program Visual Studio kompiluje aplikację funkcji platformy Azure i uruchamia środowisko uruchomieniowe usługi Azure Functions. Zostanie otwarte okno Dane wyjściowe, aby wyświetlić komunikaty podczas uruchamiania środowiska uruchomieniowego. Gdy środowisko uruchomieniowe będzie gotowe, zostanie wyświetlona lista funkcji HTTP i adres URL, których można użyć do wyzwolenia każdej funkcji.

    Zrzut ekranu przedstawiający okno środowiska uruchomieniowego usługi Azure Functions. Środowisko uruchomieniowe uruchamia aplikację funkcji platformy Azure i wyświetla adresy URL dla funkcji

  2. Otwórz przeglądarkę internetową i wprowadź adres URL wyświetlany w oknie środowiska uruchomieniowego. Domyślny adres URL to http://localhost:7071/api/WatchInfo?model=abc, więc jest to adres, którego używamy w tym ćwiczeniu. Żądanie wyzwala WatchInfo funkcję i przekazuje model abc jako parametr ciągu zapytania. Przeglądarka internetowa powinna wyświetlić fikcyjne szczegóły wygenerowane przez funkcję.

    Zrzut ekranu przedstawiający przeglądarkę internetową wyzwalającą funkcję platformy Azure WatchInfo. Funkcja zwraca fikcyjne szczegóły modelu określonego w ciągu zapytania podanego adresu URL.

  3. Wprowadź adres URL http://localhost:7071/api/WatchInfo. To żądanie nie zawiera ciągu zapytania. Wyzwalacz zwraca odpowiedź o błędzie, a przeglądarka internetowa wyświetla komunikat Please provide a watch model in the query string.

  4. Zamknij przeglądarkę internetową, ale pozostaw uruchomioną aplikację funkcji platformy Azure.

  5. W programie Visual Studio ustaw punkt przerwania w wierszu kodu odpowiadającym za pobranie modelu z ciągu zapytania.

    Zrzut ekranu programu Visual Studio przedstawiający punkt przerwania w instrukcji, która odczytuje model z ciągu zapytania.

  6. Uruchom ponownie przeglądarkę internetową i wprowadź adres URL bez ciągu http://localhost:7071/api/WatchInfozapytania .

    Program Visual Studio wyróżnia kod w punkcie przerwania, w którym wykonywanie jest wstrzymane.

  7. W programie Visual Studio, aby przejść przez instrukcję w punkcie przerwania, naciśnij klawisz F10.

  8. Na karcie Autos (Autos) okna Debugger (Debuger) sprawdź, czy zmienna model to null. Zmienna pokazuje tę wartość, ponieważ ciąg zapytania nie zawiera parametru modelu.

    Zrzut ekranu debugera programu Visual Studio przedstawiający wartość zmiennej modelu.

  9. Naciśnij klawisz F10 ponownie i sprawdź, czy kontrolka przechodzi do instrukcji zwracającej BadRequestObjectResult obiekt.

  10. Aby kontynuować uruchamianie metody i wrócić do przeglądarki internetowej, naciśnij klawisz F5. Powinien zostać wyświetlony ten sam komunikat o błędzie.

  11. W przeglądarce internetowej wprowadź adres URL z ciągiem zapytania i parametrem „model”. Przejrzyj funkcję w debugerze i sprawdź, czy model został prawidłowo pobrany. Zmienna model powinna otrzymać wartość parametru, a szczegóły modelu powinny zostać zwrócone jako obiekt OkObjectResult.

  12. Na pasku menu wybierz pozycję Debuguj Zatrzymaj>debugowanie debugowania.

W tym ćwiczeniu pokazano, jak rozszerzenie Narzędzi usługi Azure Functions w programie Visual Studio upraszcza tworzenie aplikacji funkcji platformy Azure, umożliwiając tworzenie i debugowanie kodu za pomocą znanych narzędzi.