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.
Förutsättningar
Följande krävs för att slutföra den här snabbstarten:
Visual Studio Code installerat.
Följande Visual Studio Code-tillägg har installerats:
Den senaste versionen av Azure Functions Core Tools installerad.
En Azure-prenumeration Om du vill använda Durable Functions måste du ha ett Azure Storage-konto.
.NET Core SDK version 3.1 eller senare installerad.
Ett HTTP-testverktyg som skyddar dina data. Mer information finns i HTTP-testverktyg.
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.
På menyn Visa väljer du Kommandopalett (eller ctrl+Skift+P).
I kommandotolken (
>
) anger du och väljer sedan Azure Functions: Create New Project (Skapa nytt projekt).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.
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.
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.
I terminalpanelen kopierar du URL-slutpunkten för din HTTP-utlösta funktion.
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.
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" }
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.
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.
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.
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.
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.
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).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.
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.
I kommandopaletten anger du och väljer sedan Azure Functions: Deploy to Function App (Azure Functions: Distribuera till funktionsapp).
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.
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.
Testa din funktion i Azure
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
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.
Relaterat innehåll
- Lär dig mer om vanliga durable functions-appmönster.
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.
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.
I Visual Studio går du till arkivmenyn och väljer Nytt>projekt.
I Skapa ett nytt projekt söker du efter funktioner, väljer Azure Functions-mallen och väljer sedan Nästa.
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.
I Ytterligare information använder du de inställningar som beskrivs i nästa tabell.
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.
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.
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.
Kopiera URL:en för funktionen från dina Azure Functions-utdata.
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:
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.
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" }
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.
I Solution Explorer högerklickar du på projektet och väljer Publicera. I Mål väljer du Azure och sedan Nästa.
På Specifikt mål väljer du Azure-funktionsapp (Windows). En funktionsapp som körs i Windows skapas. Välj Nästa.
I Functions-instansen väljer du Skapa en ny Azure-funktion.
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-9
och-
.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. 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.
På 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.
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 .
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.
Testa din funktion i Azure
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
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.
Relaterat innehåll
- Lär dig mer om vanliga durable functions-appmönster.