Vad är Durable Functions?
Med Durable Functions kan du implementera komplexa tillståndskänsliga funktioner i en serverlös miljö.
I exempelscenariot följer ditt företag för närvarande en manuell godkännandeprocess för projektdesignförslag. Processen omfattar flera steg, och varje steg i processen kan variera i varaktighet. Det är komplicerat och dyrt att implementera en automatiserad process internt. Det krävs stora arbetsinsatser för att koordinera varje steg. Dessutom måste du kunna införa anpassad logik i arbetsflödet.
I den här enheten lär du dig om fördelarna med Durable Functions. Du lär dig om de olika funktionstyperna och viktiga begrepp som är kopplade till Durable Functions.
Varaktiga funktioner
Durable Functions är en utökning av Azure Functions. Medan Azure Functions fungerar i en tillståndslös miljö kan Durable Functions behålla tillståndet mellan funktionsanrop. Med den här metoden kan du förenkla komplexa tillståndskänsliga körningar i en serverlös miljö.
Durable Functions skalar efter behov och ger ett kostnadseffektivt sätt att implementera komplexa arbetsflöden i molnet. Här följer några av fördelarna med att använda Durable Functions:
De gör att du kan skriva händelsedriven kod. En varaktig funktion kan vänta asynkront på en eller flera externa händelser och sedan utföra en serie uppgifter som svar på dessa händelser.
Du kan länka ihop funktioner. Du kan implementera vanliga mönster som-out/-in, som använder en funktion för att anropa andra parallellt och sedan ackumulera resultaten.
Du kan orkestrera och samordna funktioner och ange i vilken ordning funktionerna ska köras.
Tillståndet hanteras åt dig. Du behöver skriva egen kod för att spara tillståndsinformation för en långvarig funktion.
Med Durable Functions kan du definiera tillståndskänsliga arbetsflöden med hjälp av en orkestreringsfunktion. Orkestreringsfunktioner har följande extra fördelar:
Du kan definiera arbetsflödena i kod. Du behöver inte skriva en JSON-beskrivning eller använda ett verktyg för arbetsflödesdesign.
Funktioner kan anropas både synkront och asynkront. Utdata från de anropade funktionerna sparas lokalt i variabler och används i efterföljande funktionsanrop.
Azure gör automatiskt kontrollpunkter för en funktions förlopp när funktionen väntar. Azure kan välja att dehydrera funktionen och spara dess tillstånd medan funktionen väntar på att bevara resurser och minska kostnaderna. När funktionen börjar köras igen rehydrerar Azure den och återställer dess tillstånd.
Funktionstyper
Du kan använda tre hållbara funktionstyper: Klient, Orchestrator och Aktivitet.
Klientfunktioner är startpunkten för skapandet av en instans av Durable Functions-orkestrering. De kan köras som svar på en händelse från många källor, till exempel en ny HTTP-begäran som mottas, ett meddelande som skickas till en meddelandekö eller en händelse som skickas till en händelseström. Du kan skriva dem i vilket som helst av de språk som stöds.
Orchestrator-funktioner beskriver hur åtgärder körs och i vilken ordning de körs. Du skriver orkestreringslogik i kod (C# eller JavaScript).
Aktivitetsfunktioner är de grundläggande arbetsenheterna i en Durable Functions-orkestrering. En aktivitetsfunktion innehåller det faktiska arbete som utförs av de uppgifter som orkestreras.
Programmönster
Du kan använda Durable Functions för att implementera många vanliga arbetsflödesmönster. Dessa mönster omfattar:
Funktionslänkning: I det här mönstret kör arbetsflödet en sekvens med funktioner i en angiven ordning. En funktions utdata tillämpas på nästa funktions indata i sekvensen. Den slutliga funktionens utdata används för att generera ett resultat.
Fläkta ut/fläkta in: Det här mönstret kör flera funktioner parallellt och väntar på att alla funktioner ska slutföras. Du kan aggregera resultatet av de parallella körningarna eller använda dem för att beräkna ett slutligt resultat.
Asynkrona HTTP-API:er: Det här mönstret åtgärdar problemet med att samordna tillståndet för långvariga åtgärder med externa klienter. Ett HTTP-anrop kan utlösa den tidskrävande åtgärden och sedan omdirigera klienten till en statusslutpunkt. Klienten kan lära sig när åtgärden är klar genom att avsöka den här slutpunkten.
Övervakare: Det här mönstret implementerar en återkommande process i ett arbetsflöde, eventuellt letar efter en ändring i tillståndet. Du kan till exempel använda det här mönstret för att avsöka tills särskilda villkor uppfylls.
Mänsklig interaktion: Det här mönstret kombinerar automatiserade processer som också involverar viss mänsklig interaktion. Det är knepigt att ha en manuell process i en automatiserad process eftersom människor inte är lika snabba eller responsiva som de flesta datorer. Du kan införliva mänsklig interaktion med timeouter och kompensationslogik som körs om människan inte interagerar korrekt inom en angiven svarstid. En godkännandeprocess är ett exempel på en process som inbegriper mänsklig interaktion.
Jämförelse med Logic Apps
Durable Functions och Logic Apps är båda Azure-tjänster som möjliggör serverlösa arbetsbelastningar. Azure Durable Functions är avsett som ett kraftfullt alternativ för serverlös beräkning för körning av anpassad logik. Azure Logic Apps lämpar sig bättre för integrering av Azure-tjänster och komponenter. Du kan använda endera tekniken för att skapa komplexa orkestreringar. Med Azure Durable Functions utvecklar du orkestreringar genom att skriva kod och använda Durable Functions-tillägget. Med Logic Apps skapar du orkestreringar genom att använda designytan eller redigera konfigurationsfiler.
I följande tabell visas några av de viktigaste skillnaderna mellan Azure Durable Functions och Azure Logic Apps.
Uppgift | Azure Durable Functions | Azure Logic Program-program |
---|---|---|
Utveckling | Kod först (imperativt) | Design först (deklarativt) |
Anslutning | Ett dussintal inbyggda bindningstyper. Du kan skriva kod för anpassade bindningar. | En stor samling med anslutningsappar. Enterprise-integrationspaket för B2B. Du kan även bygga anpassade anslutningsprogram. |
Åtgärder | Varje aktivitet är en Azure-funktion. Du skriver koden för aktivitetsfunktioner. | En stor samling med färdiga åtgärder. Du integrerar anpassad logik via anpassade anslutningsappar. |
Övervakning | Azure Application Insights | Azure-portalen och Azure Monitor-loggar |
Hantering | REST API, PowerShell, Visual Studio | Azure Portal, REST API, PowerShell, Visual Studio, Visual Studio Code-tillägg |