Skapa din första beständiga funktion i C#

Durable Functions är ett tillägg till Azure Functions som gör att du kan skriva tillståndskänsliga funktioner i en serverlös miljö. Tillägget hanterar tillstånd, kontrollpunkter och omstarter.

I den här artikeln får du lära dig hur du använder Visual Studio Code för att lokalt skapa och testa en "hello world"-beständig funktion. Den här funktionen samordnar och kedjar samman anrop till andra funktioner. Du kan sedan publicera funktionskoden till Azure. Dessa verktyg är tillgängliga som en del av Visual Studio Code Azure Functions-tillägget.

Skärmbild av Visual Studio Code-fönstret med en beständig funktion.

Förutsättningar

För att slutföra den här kursen behöver du:

Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.

Skapa ditt lokala projekt

I det här avsnittet använder du Visual Studio Code för att skapa ett lokalt Azure Functions-projekt.

  1. I Visual Studio Code trycker du på F1 (eller Ctrl/Cmd+Skift+P) för att öppna kommandopaletten. I kommandopaletten söker du efter och väljer Azure Functions: Create New Project....

    Skärmbild av fönstret Skapa ett funktionsprojekt.

  2. Välj en tom mappplats för projektet och välj Välj.

  3. Följ anvisningarna och ange följande information:

    Prompt Värde beskrivning
    Välj ett språk för funktionsappprojektet C# Skapa ett lokalt C#Functions-projekt.
    Välj en version Azure Functions v4 Du ser bara det här alternativet när Core Tools inte redan är installerat. I det här fallet installeras Core Tools första gången du kör appen.
    Välj en mall för projektets första funktion Hoppa över så länge
    Välj hur du vill öppna projektet Öppna i aktuellt fönster Öppnar Visual Studio Code igen i den mapp som du har valt.

Visual Studio Code installerar Azure Functions Core Tools om det behövs. Det skapar också ett funktionsappprojekt i en mapp. Det här projektet innehåller konfigurationsfilerna host.json och local.settings.json .

Lägga till funktioner i appen

Följande steg använder en mall för att skapa varaktig funktionskod.

  1. I kommandopaletten söker du efter och väljer Azure Functions: Create Function....

  2. Följ anvisningarna och ange följande information:

    Prompt Värde beskrivning
    Välj en mall för din funktion DurableFunctionsOrchestration Skapa en Durable Functions-orkestrering
    Ange ett funktionsnamn HelloOrchestration Namnet på klassen där funktioner skapas
    Ange ett namnområde Company.Function Namnområde för den genererade klassen
  3. När Visual Studio Code uppmanar dig att välja ett lagringskonto väljer du Välj lagringskonto. Följ anvisningarna och ange följande information för att skapa ett nytt lagringskonto i Azure:

    Prompt Värde beskrivning
    Välj en prenumeration namnet på din prenumeration Välj din Azure-prenumeration
    Välj ett lagringskonto Skapa ett nytt lagringskonto
    Ange namnet på det nya lagringskontot unikt namn Namnet på lagringskontot som ska skapas
    Välj en resursgrupp unikt namn Namnet på resursgruppen som ska skapas
    Välj en plats Regionen Välj en region nära dig

En klass som innehåller de nya funktionerna läggs till i projektet. Visual Studio Code lägger också till lagringskontot anslutningssträng till local.settings.json och en referens till Microsoft.Azure.WebJobs.Extensions.DurableTask NuGet-paketet till .csproj-projektfilen.

Öppna den nya HelloOrchestration.cs-filen för att visa innehållet. Det här beständiga funktionen är ett enkelt funktionslänkningsexempel med följande metoder:

Metod FunctionName beskrivning
RunOrchestrator HelloOrchestration Hanterar varaktig orkestrering. I det här fallet startar orkestreringen, den skapar en lista och lägger till resultatet av tre funktionsanrop i listan. När de tre funktionsanropen har slutförts returnerar den listan.
SayHello HelloOrchestration_Hello Funktionen returnerar ett ”hello”. Det är funktionen som innehåller den affärslogik som samordnas.
HttpStart HelloOrchestration_HttpStart En HTTP-utlöst funktion som startar en instans av orkestreraren och returnerar ett statuskontrollsvar.

Nu när du har skapat ditt funktionsprojekt och en beständig funktion kan du testa den på en lokal dator.

Testa funktionen lokalt

Med Azure Functions Core Tools kan du köra ett Azure Functions-projekt på din lokala utvecklingsdator. Du uppmanas att installera de här verktygen första gången du startar en funktion från Visual Studio Code.

  1. Om du vill testa funktionen anger du en brytpunkt i aktivitetsfunktionskoden SayHello och trycker på F5 för att starta funktionsappprojektet. Utdata från Core Tools visas på panelen Terminal.

    Kommentar

    Mer information om felsökning finns i Durable Functions-diagnostik.

  2. På panelen Terminal kopierar du URL-slutpunkten för den HTTP-utlösta funktionen.

    Skärmbild av azures lokala utdatafönster.

  3. Använd ett verktyg som Postman eller cURL och skicka sedan en HTTP POST-begäran till URL-slutpunkten.

    Svaret är HTTP-funktionens första resultat, så att vi vet att den varaktiga orkestreringen har startats. Det är ännu inte slutresultatet av orkestreringen. Svaret innehåller några användbara URL:er. För tillfället kör vi en fråga om orkestreringens status.

  4. Kopiera URL-värdet för statusQueryGetUri, klistra in det i webbläsarens adressfält och kör begäran. Du kan också fortsätta att använda Postman för att utfärda GET-begäran.

    Begäran kör en fråga mot orkestreringsinstansen om statusen. Du måste få ett slutligt svar som visar oss att instansen har slutförts och innehåller utdata eller resultat för den varaktiga funktionen. Det ser ut så här:

    {
        "name": "HelloOrchestration",
        "instanceId": "9a528a9e926f4b46b7d3deaa134b7e8a",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2020-03-18T21:54:49Z",
        "lastUpdatedTime": "2020-03-18T21:54:54Z"
    }
    
  5. Om du vill sluta felsöka trycker du på Skift + F5 i Visual Studio Code.

När du har kontrollerat att funktionen körs korrekt på den lokala datorn är det dags att publicera projektet på Azure.

Logga in på Azure

Innan du kan skapa Azure-resurser eller publicera din app måste du logga in på Azure.

  1. Om du inte redan är inloggad väljer du Azure-ikonen i aktivitetsfältet. I området Resurser väljer du Sedan Logga in på Azure....

    Skärmbild av inloggningen till Azure-fönstret i VS Code.

    Om du redan är inloggad och kan se dina befintliga prenumerationer går du till nästa avsnitt. Om du ännu inte har ett Azure-konto väljer du Skapa ett Azure-konto.... Eleverna kan välja Skapa ett Azure for Students-konto....

  2. När du uppmanas till det i webbläsaren väljer du ditt Azure-konto och loggar in med dina autentiseringsuppgifter för Azure-kontot. Om du skapar ett nytt konto kan du logga in när ditt konto har skapats.

  3. När du har loggat in kan du stänga det nya webbläsarfönstret. De prenumerationer som tillhör ditt Azure-konto visas i sidofältet.

Skapa funktionsappen i Azure

I det här avsnittet skapar du en funktionsapp och relaterade resurser i din Azure-prenumeration.

  1. Välj Azure-ikonen i aktivitetsfältet. I området Resurser väljer du + sedan ikonen och väljer alternativet Skapa funktionsapp i Azure.

    Skapa en resurs i din Azure-prenumeration

  2. Ange följande information i meddelanderutorna:

    Prompt Urval
    Välj prenumeration Välj den prenumeration som ska användas. Du ser inte den här uppmaningen när du bara har en prenumeration synlig under Resurser.
    Ange ett globalt unikt namn för funktionsappen Ange ett namn som är giltigt i en URL-sökväg. Namnet du skriver verifieras för att se till att det är unikt i Azure Functions.
    Välj en körningsstack Välj den språkversion som du har kört lokalt på.
    Välj en plats för nya resurser För bättre prestanda väljer du en region nära dig.

    Tillägget visar status för enskilda resurser när de skapas i Azure i panelen Azure: Aktivitetslogg .

    Logg över skapande av Azure-resurser

  3. När skapandet är klart skapas följande Azure-resurser i din prenumeration. Resurserna namnges baserat på funktionsappens namn:

    • En resursgrupp, som är en logisk container för relaterade resurser.
    • Ett Azure Storage-standardkonto som underhåller tillstånd och annan information om dina projekt.
    • En funktionsapp som tillhandahåller miljön för att köra funktionskoden. Med en funktionsapp kan du gruppera funktioner som en logisk enhet för enklare hantering, distribution och delning av resurser inom samma värdplan.
    • En App Service-plan som definierar den underliggande värden för din funktionsapp.
    • En Application Insights-instans som är ansluten till funktionsappen, som spårar användningen av dina funktioner i appen.

    Ett meddelande visas när funktionsappen har skapats och distributionspaketet har tillämpats.

    Dricks

    Som standard skapas de Azure-resurser som krävs av funktionsappen baserat på det funktionsappnamn du anger. Som standard skapas de också i samma nya resursgrupp med funktionsappen. Om du antingen vill anpassa namnen på dessa resurser eller återanvända befintliga resurser måste du publicera projektet med avancerade skapandealternativ i stället.

Distribuera projektet till Azure

Viktigt!

Distribution till en befintlig funktionsapp skriver alltid över innehållet i appen i Azure.

  1. I området Resurser i Azure-aktiviteten letar du upp den funktionsappresurs som du nyss skapade, högerklickar på resursen och väljer Distribuera till funktionsapp....

  2. När du uppmanas att skriva över tidigare distributioner väljer du Distribuera för att distribuera funktionskoden till den nya funktionsappresursen.

  3. När distributionen är klar väljer du Visa utdata för att visa skapande- och distributionsresultatet, inklusive de Azure-resurser som du skapade. Om du missar meddelandet väljer du klockikonen i det nedre högra hörnet för att se det igen.

    Skärmbild av fönstret Visa utdata.

Testa din funktion i Azure

  1. Kopiera URL:en för HTTP-utlösaren från panelen Utdata. URL:en som anropar din HTTP-utlösta funktion måste ha följande format:

    https://<functionappname>.azurewebsites.net/api/HelloOrchestration_HttpStart

  2. Klistra in den nya URL:en för HTTP-begäran i webbläsarens adressfält. Du måste få samma statussvar som tidigare när du använder den publicerade appen.

Nästa steg

Du har använt Visual Studio Code för att skapa och publicera en C#-funktionsapp.

I den här artikeln får du lära dig hur du använder Visual Studio 2022 för att lokalt skapa och testa en hållbar funktion för "hello world". Den här funktionen orkestrerar och kedjar samman anrop till andra funktioner. Du publicerar sedan funktionskoden till Azure. De här verktygen är tillgängliga som en del av arbetsbelastningen för Azure-utveckling i Visual Studio 2022.

Skärmbild av Visual Studio 2019-fönstret med en beständig funktion.

Förutsättningar

För att slutföra den här kursen behöver du:

  • Installera Visual Studio 2022. Kontrollera att även arbetsbelastningen Azure-utveckling är installerad. Visual Studio 2019 stöder även Durable Functions-utveckling, men användargränssnittet och stegen skiljer sig åt.

  • Kontrollera att Azurite-emulatorn är installerad och körs.

Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.

Skapa ett funktionsapprojekt

Med Azure Functions-mallen skapas ett projekt som kan publiceras till en funktionsapp i Azure. Med en funktionsapp kan du gruppera funktioner som en logisk enhet för enklare hantering, distribution, skalning och delning av resurser.

  1. Välj Nytt>ProjektArkiv-menyn i Visual Studio.

  2. I dialogrutan Skapa ett nytt projekt söker du efter functions, väljer Azure Functions-mallen och väljer sedan Nästa.

    Skärmbild av dialogrutan nytt projekt för att skapa en funktion i Visual Studio.

  3. Ange ett projektnamn för projektet och välj OK. Projektnamnet måste vara giltigt som ett C#-namnområde, så använd inte understreck, bindestreck eller icke-numeriska tecken.

  4. Under Ytterligare information använder du de inställningar som anges i tabellen som följer bilden.

    Skärmbild av dialogrutan Skapa ett nytt Azure Functions-program i Visual Studio.

    Inställning Föreslaget värde beskrivning
    Functions Worker .NET 6 Skapar ett funktionsprojekt som stöder .NET 6 och Azure Functions Runtime 4.0. Läs mer i informationen om att köra rätt körningsversion av Azure Functions.
    Funktion Tomt Detta skapar en tom funktionsapp.
    Lagringskonto Lagringsemulator Det krävs ett lagringskonto för tillståndshanteringen för den beständiga funktionen.
  5. Välj Skapa för att skapa ett tomt funktionsprojekt. Det här projektet har grundläggande konfigurationsfiler som behövs för att köra dina funktioner.

Lägga till funktioner i appen

Följande steg använder en mall för att skapa varaktig funktionskod.

  1. Högerklicka på projektet i Visual Studio och välj Lägg till>Ny Azure-funktion.

    Skärmbild av Lägg till ny funktion.

  2. Kontrollera att Azure-funktionen har valts från menyn Lägg till, ange ett namn på C#-filen och välj sedan Lägg till.

  3. Välj mallen Durable Functions Orchestration och välj sedan Lägg till.

    Skärmbild av Välj beständig mall.

En ny beständig funktion läggs till i appen. Öppna den nya .cs-filen för att visa innehållet. Det här beständiga funktionen är ett enkelt funktionslänkningsexempel med följande metoder:

Metod FunctionName beskrivning
RunOrchestrator <file-name> Hanterar varaktig orkestrering. I det här fallet startar orkestreringen, den skapar en lista och lägger till resultatet av tre funktionsanrop i listan. När de tre funktionsanropen har slutförts returnerar den listan.
SayHello <file-name>_Hello Funktionen returnerar ett ”hello”. Det är funktionen som innehåller den affärslogik som samordnas.
HttpStart <file-name>_HttpStart En HTTP-utlöst funktion som startar en instans av orkestreraren och returnerar ett statuskontrollsvar.

Du kan testa det på den lokala datorn nu när du har skapat funktionsprojektet och en beständig funktion.

Testa funktionen lokalt

Med Azure Functions Core Tools kan du köra ett Azure Functions-projekt på din lokala utvecklingsdator. Du uppmanas att installera dessa verktyg första gången du startar en funktion från Visual Studio.

  1. Testa funktionen genom att trycka på F5. Om du får en uppmaning accepterar du begäran från Visual Studio för att ladda ned och installera Azure Functions Core (CLI)-verktyg. Du kan även behöva skapa ett brandväggsundantag så att verktygen kan hantera HTTP-förfrågningar.

  2. Kopiera URL:en för funktionen från dina Azure Functions-utdata.

    Skärmbild av lokal Azure-körning.

  3. Klistra in webbadressen för HTTP-begäran i webbläsarens adressfält och kör begäran. Nedan visas svaret på den lokala GET-begäran som returnerades av funktionen i webbläsaren:

    Skärmbild av webbläsarfönstret med statusQueryGetUri framhävt.

    Svaret är HTTP-funktionens första resultat, så att vi vet att den varaktiga orkestreringen har startats. Det är ännu inte slutresultatet av orkestreringen. Svaret innehåller några användbara URL:er. För tillfället kör vi en fråga om orkestreringens status.

  4. Kopiera URL-värdet för statusQueryGetUri, klistra in det i webbläsarens adressfält och kör begäran.

    Begäran kör en fråga mot orkestreringsinstansen om statusen. Du måste få ett slutligt svar som ser ut så här. Den här utdatan visar att instansen har slutförts och innehåller utdata eller resultat från den hållbara funktionen.

    {
        "name": "Durable",
        "instanceId": "d495cb0ac10d4e13b22729c37e335190",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2019-11-02T07:07:40Z",
        "lastUpdatedTime": "2019-11-02T07:07:52Z"
    }
    
  5. Tryck på Skift + F5 för att stoppa felsökningen.

När du har kontrollerat att funktionen körs korrekt på den lokala datorn är det dags att publicera projektet på Azure.

Publicera projektet på Azure

Du måste ha en funktionsapp i din Azure-prenumeration innan du publicerar projektet. Du kan skapa en funktionsapp direkt från Visual Studio.

  1. I Solution Explorer högerklickar du på projektet och väljer Publicera. I Mål väljer du Azure och sedan Nästa.

    Skärmbild av publiceringsfönstret.

  2. Välj Azure-funktionsapp (Windows) för det specifika målet, som skapar en funktionsapp som körs i Windows och välj sedan Nästa.

    Skärmbild av publiceringsfönstret med ett specifikt mål.

  3. I funktionsinstansen väljer du Skapa en ny Azure-funktion...

    Skärmbild av att skapa en ny funktionsappinstans.

  4. Skapa en ny instans med de värden som anges i följande tabell:

    Inställning Värde Beskrivning
    Namn Globalt unikt namn Namn som unikt identifierar din nya funktionsapp. Acceptera det här namnet eller ange ett nytt namn. Giltiga tecken är: a-z, 0-9och -.
    Abonnemang Din prenumeration Den Azure-prenumeration som ska användas. Acceptera den här prenumerationen eller välj en ny i listrutan.
    Resursgrupp Namnet på resursgruppen Den resursgrupp där du vill skapa funktionsappen. Välj Ny för att skapa en ny resursgrupp. Du kan också välja en befintlig resursgrupp i listrutan.
    Plantyp Förbrukning När du publicerar projektet till en funktionsapp som körs i en förbrukningsplan betalar du bara för körningar av funktionsappen. Andra värdplaner medför högre kostnader.
    Plats Plats för apptjänsten Välj en plats i en region nära dig eller andra tjänster som dina funktioner har åtkomst till.
    Azure Storage Allmänt lagringskonto Azure Functions-körmiljön kräver ett Azure Storage-konto. Välj Ny för att konfigurera ett allmänt lagringskonto. Du kan också välja ett befintligt konto som uppfyller kraven för lagringskontot.
    Application Insights Application Insights-instans Du bör aktivera Application Insights-integrering för din funktionsapp. Välj Ny för att skapa en ny instans, antingen i en ny eller i en befintlig Log Analytics-arbetsyta. Du kan också välja en befintlig instans.

    Skärmbild av dialogrutan Skapa App Service.

  5. Välj Skapa för att skapa en funktionsapp och dess relaterade resurser i Azure. Statusen för resursskapande visas längst ned till vänster i fönstret.

  6. I Functions-instansen kontrollerar du att paketfilen Kör från är markerad. Funktionsappen distribueras med Zip Deploy med Läget Run-From-Package aktiverat. Zip Deploy är den rekommenderade distributionsmetoden för funktionsprojektet som ger bättre prestanda.

    Skärmbild av skapande av slutförd profil.

  7. Välj Slutför och på sidan Publicera väljer du Publicera för att distribuera paketet som innehåller dina projektfiler till den nya funktionsappen i Azure.

    När distributionen är klar visas rot-URL:en för funktionsappen i Azure på fliken Publicera .

  8. På fliken Publicera i avsnittet Värd väljer du Öppna i Azure-portalen. Då öppnas den nya funktionsappens Azure-resurs i Azure-portalen.

    Skärmbild av meddelande om att publiceringen lyckades.

Testa din funktion i Azure

  1. Kopiera den grundläggande URL:en för funktionsappen från sidan Publicera profil. Ersätt localhost:port-delen av URL:en som du använde när du testade funktionen lokalt med den nya bas-URL:en.

    URL:en som anropar http-utlösaren för den hållbara funktionen måste ha följande format:

    https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>_HttpStart

  2. Klistra in den nya URL:en för HTTP-begäran i webbläsarens adressfält. Du måste få samma statussvar som tidigare när du använder den publicerade appen.

Nästa steg

Du har använt Visual Studio för att skapa och publicera en beständig C#-funktionsapp.