Dela via


Snabbstart: Skapa en C#Durable Functions-app

Använd Durable Functions, en funktion i Azure Functions, för att skriva tillståndskänsliga funktioner i en serverlös miljö. Durable Functions hanterar tillstånd, kontrollpunkter och omstarter i ditt program.

Precis som Azure Functions stöder Durable Functions två processmodeller för .NET-klassbiblioteksfunktioner. Mer information om de två processerna finns i Skillnader mellan processbaserad och isolerad arbetsprocess .NET Azure Functions.

I den här snabbstarten använder du Visual Studio Code för att lokalt skapa och testa en "hello world" Durable Functions-app. Funktionsappen samordnar och kedjar samman anrop till andra funktioner. Sedan publicerar du funktionskoden i Azure. De verktyg som du använder är tillgängliga via Visual Studio Code Azure Functions-tillägget.

Skärmbild som visar Durable Functions-appkod i Visual Studio Code.

Förutsättningar

Följande krävs för att slutföra den här snabbstarten:

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

Skapa ett Azure Functions-projekt

Skapa ett lokalt Azure Functions-projekt i Visual Studio Code.

  1. På menyn Visa väljer du Kommandopalett (eller ctrl+Skift+P).

  2. I kommandotolken (>) anger du och väljer sedan Azure Functions: Create New Project (Skapa nytt projekt).

    Skärmbild som visar kommandot för att skapa ett Functions-projekt.

  3. Välj bläddra. I dialogrutan Välj mapp går du till en mapp som ska användas för projektet och väljer sedan Välj.

  4. I anvisningarna väljer eller anger du följande värden:

    Prompt Åtgärd beskrivning
    Välj ett språk för funktionsappprojektet Välj C#. Skapar ett lokalt C#Functions-projekt.
    Välj en version Välj Azure Functions v4. Det här alternativet visas bara när Core Tools inte redan är installerat. Core Tools installeras första gången du kör appen.
    Välj en .NET-körning Välj .NET 8.0 isolerad. Skapar ett Functions-projekt som stöder .NET 8 som körs i en isolerad arbetsprocess och Azure Functions Runtime 4.0. Läs mer i informationen om att köra rätt körningsversion av Azure Functions.
    Välj en mall för projektets första funktion Välj Durable Functions Orchestration. Skapar en Durable Functions-orkestrering.
    Välj en beständig lagringstyp Välj Azure Storage. Standardlagringsprovidern för Durable Functions. Mer information finns i Durable Functions-lagringsproviders.
    Ange ett funktionsnamn Ange HelloOrchestration. Ett namn för orkestreringsfunktionen.
    Ange ett namnområde Ange Company.Function. Ett namnområde för den genererade klassen.
    Välj hur du vill öppna projektet Välj Öppna i aktuellt fönster. Öppnar Visual Studio Code i den mapp som du har valt.

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

En annan fil, HelloOrchestration.cs, innehåller de grundläggande byggstenarna i en Durable Functions-app:

Metod beskrivning
HelloOrchestration Definierar durable functions-apporkestreringen. I det här fallet startar orkestreringen, skapar en lista och lägger sedan till resultatet av tre funktionsanrop i listan. När de tre funktionsanropen är klara returneras listan.
SayHello En enkel funktionsapp som returnerar hello. Den här funktionen innehåller den affärslogik som är orkestrerad.
HelloOrchestration_HttpStart En HTTP-utlöst funktion som startar en instans av orkestreringen och returnerar ett svar om kontrollstatus .

Mer information om dessa funktioner finns i Typer och funktioner för Durable Functions.

Konfigurera lagring

Du kan använda Azurite, en emulator för Azure Storage, för att testa funktionen lokalt. I local.settings.json anger du värdet för AzureWebJobsStorage som UseDevelopmentStorage=true i det här exemplet:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
  }
}

Om du vill installera och börja köra Azurite-tillägget i Visual Studio Code går du till kommandopaletten och anger Azurite: Starta och väljer Retur.

Du kan använda andra lagringsalternativ för din Durable Functions-app. Mer information om lagringsalternativ och fördelar finns i Durable Functions-lagringsproviders.

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 i Visual Studio Code.

  1. I Visual Studio Code anger du en brytpunkt i aktivitetsfunktionskoden SayHello och väljer sedan F5 för att starta funktionsappprojektet. Terminalpanelen visar utdata från Core Tools.

    Kommentar

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

    Om meddelandet Inga jobbfunktioner hittades visas uppdaterar du installationen av Azure Functions Core Tools till den senaste versionen.

  2. I terminalpanelen kopierar du URL-slutpunkten för din HTTP-utlösta funktion.

    Skärmbild av det lokala Utdatafönstret i Azure.

  3. Använd ett HTTP-testverktyg för att skicka en HTTP POST-begäran till URL-slutpunkten.

    Svaret är HTTP-funktionens första resultat. Det låter dig veta att Durable Functions-apporkestreringen har startats. Det visar ännu inte slutresultatet av orkestreringen. Svaret innehåller några användbara URL:er.

    Nu ska brytpunkten i aktivitetsfunktionen slås eftersom orkestreringen har startat. Stega igenom det för att få ett svar för 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 HTTP-testverktyget för att utfärda GET-begäran.

    Begäran frågar orkestreringsinstansen om statusen. Du bör se att instansen har slutförts och att den innehåller utdata eller resultat från Durable Functions-appen som i det här exemplet:

    {
        "name":"HelloCities",
        "instanceId":"7f99f9474a6641438e5c7169b7ecb3f2",
        "runtimeStatus":"Completed",
        "input":null,
        "customStatus":null,
        "output":"Hello, Tokyo! Hello, London! Hello, Seattle!",
        "createdTime":"2023-01-31T18:48:49Z",
        "lastUpdatedTime":"2023-01-31T18:48:56Z"
    }
    

    Dricks

    Lär dig hur du kan se omspelningsbeteendet för en Durable Functions-app via brytpunkter.

  5. Om du vill sluta felsöka väljer du 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 till 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 går du till aktivitetsfältet och väljer Azure-ikonen. Under Resurser väljer du Logga in på Azure.

    Skärmbild av inloggningen till Azure-fönstret i Visual Studio 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 att göra 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. Prenumerationerna 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. Många av besluten om att skapa resurser fattas för dig baserat på standardbeteenden. Om du vill ha mer kontroll över de skapade resurserna måste du i stället skapa funktionsappen med avancerade alternativ.

  1. I Visual Studio Code väljer du F1 för att öppna kommandopaletten. I kommandotolken (>) anger du och väljer sedan Azure Functions: Create Function App in Azure (Skapa funktionsapp i Azure).

  2. Ange följande information vid anvisningarna:

    Prompt Åtgärd
    Välj prenumeration Välj den Azure-prenumeration som ska användas. Uppmaningen visas inte 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 anger 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 kör lokalt.
    Välj en plats för nya resurser Välj en Azure-region. För bättre prestanda väljer du en region nära dig.

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

    Skärmbild som visar loggen för skapande av Azure-resurser.

  3. När funktionsappen skapas skapas följande relaterade resurser i din Azure-prenumeration. Resurserna namnges baserat på det namn som du angav för funktionsappen.

    • 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 Azure App Service-plan som definierar den underliggande värden för din funktionsapp.
    • En Application Insights-instans som är ansluten till funktionsappen och 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 namn du anger för funktionsappen. Som standard skapas resurserna med funktionsappen i samma nya resursgrupp. Om du vill anpassa namnen på de associerade resurserna eller återanvända befintliga resurser publicerar du projektet med avancerade alternativ för att skapa.

Distribuera projektet till Azure

Viktigt!

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

  1. I kommandopaletten anger du och väljer sedan Azure Functions: Deploy to Function App (Azure Functions: Distribuera till funktionsapp).

  2. Välj den funktionsapp som du nyss skapade. 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 resultatet av skapandet och distributionen, 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. I utdatapanelen i Visual Studio Code kopierar du URL:en för HTTP-utlösaren. URL:en som anropar din HTTP-utlösta funktion måste ha följande format:

    https://<function-app-name>.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 du fick när du testade lokalt när du använder den publicerade appen.

C# Durable Functions-appen som du skapade och publicerade med hjälp av Visual Studio Code är redo att användas.

Rensa resurser

Om du inte längre behöver de resurser som du skapade för att slutföra snabbstarten tar du bort resursgruppen och alla relaterade resurser för att undvika relaterade kostnader i din Azure-prenumeration.

I den här snabbstarten använder du Visual Studio 2022 för att lokalt skapa och testa en "hello world" Durable Functions-app. Funktionen samordnar och kedjar samman anrop till andra funktioner. Sedan publicerar du funktionskoden i Azure. De verktyg som du använder är tillgängliga via Azure-utvecklingsarbetsbelastningen i Visual Studio 2022.

Skärmbild av Durable Functions-appkod i Visual Studio 2019.

Förutsättningar

Följande krävs för att slutföra den här snabbstarten:

  • Visual Studio 2022 installerat.

    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.

  • Azurite-emulatorn har installerats och körts.

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

Skapa ett funktionsapprojekt

Azure Functions-mallen skapar ett projekt som du kan publicera till en funktionsapp i Azure. Du kan använda en funktionsapp för att gruppera funktioner som en logisk enhet för att enklare hantera, distribuera, skala och dela resurser.

  1. I Visual Studio går du till arkivmenyn och väljer Nytt>projekt.

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

    Skärmbild av dialogrutan Nytt projekt i Visual Studio.

  3. Som Projektnamn anger du ett namn för projektet och väljer sedan OK. Projektnamnet måste vara giltigt som ett C#-namnområde, så använd inte understreck, bindestreck eller icke-numeriska tecken.

  4. I Ytterligare information använder du de inställningar som beskrivs i nästa tabell.

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

    Inställning Åtgärd beskrivning
    Functions Worker Välj .NET 8 Isolerad (långsiktigt stöd). Skapar ett Azure Functions-projekt som stöder .NET 8 som körs i en isolerad arbetsprocess och Azure Functions Runtime 4.0. Mer information finns i Så här riktar du in dig på Azure Functions-körningsversionen.
    Funktion Ange Durable Functions Orchestration. Skapar en Durable Functions-orkestrering.

    Kommentar

    Om .NET 8 Isolerad (långsiktig support) inte visas på Functions Worker-menyn kanske du inte har de senaste Azure Functions-verktygsuppsättningarna och mallarna. Gå till Verktyg>alternativ>Projekt och lösningar>Azure Functions>Sök efter uppdateringar för att ladda ned den senaste.

  5. Om du vill använda Azurite-emulatorn kontrollerar du att kryssrutan Använd Azurite för körningslagringskonto (AzureWebJobStorage) är markerad. Om du vill skapa ett Functions-projekt med hjälp av en Durable Functions-orkestreringsmall väljer du Skapa. Projektet har de grundläggande konfigurationsfiler som du behöver för att köra dina funktioner.

    Kommentar

    Du kan välja andra lagringsalternativ för din Durable Functions-app. Mer information finns i Durable Functions-lagringsproviders.

I appmappen innehåller en fil med namnet Function1.cs tre funktioner. De tre funktionerna är de grundläggande byggstenarna i en Durable Functions-app:

Metod beskrivning
RunOrchestrator Definierar durable functions-apporkestreringen. I det här fallet startar orkestreringen, skapar en lista och lägger sedan till resultatet av tre funktionsanrop i listan. När de tre funktionsanropen är klara returneras listan.
SayHello En enkel funktionsapp som returnerar hello. Den här funktionen innehåller den affärslogik som är orkestrerad.
HttpStart En HTTP-utlöst funktion som startar en instans av orkestreringen och returnerar ett svar om kontrollstatus .

Mer information om dessa funktioner finns i Typer och funktioner för Durable Functions.

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 i Visual Studio Code.

  1. I Visual Studio Code anger du en brytpunkt i aktivitetsfunktionskoden SayHello och väljer sedan F5. Om du uppmanas att godkänna begäran från Visual Studio om att ladda ned och installera Azure Functions Core-verktyg (kommandorad). Du kan också behöva aktivera ett brandväggsfel så att verktygen kan hantera HTTP-begäranden.

    Kommentar

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

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

    Skärmbild av den lokala Azure-körningen.

  3. Klistra in URL:en för HTTP-begäran i webbläsarens adressfält och kör begäran. Följande skärmbild visar svaret på den lokala GET-begäran som funktionen returnerar i webbläsaren:

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

    Svaret är HTTP-funktionens första resultat. Det låter dig veta att den varaktiga orkestreringen har startats. Det visar ännu inte slutresultatet av orkestreringen. Svaret innehåller några användbara URL:er.

    Nu ska brytpunkten i aktivitetsfunktionen slås eftersom orkestreringen startade. Stega igenom det för att få ett svar för 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 frågar orkestreringsinstansen om statusen. Du bör se att instansen har slutförts och att den innehåller utdata eller resultat från den varaktiga funktionen, som i det här exemplet:

    {
        "name":"HelloCities",
        "instanceId":"668814ac6ce84a43a9e6757f81dbc0bc",
        "runtimeStatus":"Completed",
        "input":null,
        "customStatus":null,
        "output":"Hello, Tokyo! Hello, London! Hello Seattle!",
        "createdTime":"2023-01-31T16:44:34Z",
        "lastUpdatedTime":"2023-01-31T16:44:37Z"
    }
    

    Dricks

    Lär dig hur du kan se omspelningsbeteendet för en Durable Functions-app via brytpunkter.

  5. Om du vill sluta felsöka väljer du Skift+F5.

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

Publicera projektet på Azure

Du måste ha en funktionsapp i din Azure-prenumeration innan du publicerar projektet. Du kan skapa en funktionsapp i 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. Specifikt mål väljer du Azure-funktionsapp (Windows). En funktionsapp som körs i Windows skapas. Välj Nästa.

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

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

    Skärmbild som visar Skapa en ny funktionsappinstans.

  4. Skapa en ny instans med hjälp av 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 att använda 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 Azure-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 att använda ett befintligt konto som uppfyller kraven för lagringskontot.
    Application Insights Application Insights-instans Du bör aktivera Azure 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 att använda 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 i det nedre vänstra hörnet i fönstret.

  6. Functions-instansen kontrollerar du att kryssrutan Kör från paketfil är markerad. Funktionsappen distribueras med zip-distribution med läget Run-From-Package aktiverat. Zip Deploy är den rekommenderade distributionsmetoden för ditt funktionsprojekt för bättre prestanda.

    Skärmbild av fönstret Slutför profilskapande.

  7. Välj Slutför och välj Publicera i fönstret Publicera för att distribuera paketet som innehåller dina projektfiler till din nya funktionsapp i Azure.

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

  8. På fliken Publicera går du till avsnittet Värd och väljer Öppna i Azure-portalen. Den nya funktionsappens Azure-resurs öppnas i Azure-portalen.

    Skärmbild av meddelandet Publicera lyckad publicering.

Testa din funktion i Azure

  1. På sidan Publicera profil kopierar du bas-URL:en för funktionsappen. Ersätt den localhost:port del 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. När du testar den publicerade appen måste du få samma statussvar som du fick när du testade lokalt.

C# Durable Functions-appen som du skapade och publicerade med hjälp av Visual Studio är redo att användas.

Rensa resurser

Om du inte längre behöver de resurser som du skapade för att slutföra snabbstarten tar du bort resursgruppen och alla relaterade resurser för att undvika relaterade kostnader i din Azure-prenumeration.