Durable Functions-typer och funktioner

Durable Functions är ett tillägg till Azure Functions. Du kan använda Durable Functions för tillståndskänslig orkestrering av funktionskörning. En hållbar funktionsapp är en lösning som består av olika Azure-funktioner. Funktioner kan spela olika roller i en varaktig funktionsorkestrering.

Det finns för närvarande fyra typer av varaktiga funktioner i Azure Functions: aktivitet, orkestrering, entitet och klient. Resten av det här avsnittet går in på mer information om vilka typer av funktioner som ingår i en orkestrering.

Orchestrator-funktioner

Orchestrator-funktioner beskriver hur åtgärder körs och i vilken ordning åtgärderna körs. Orchestrator-funktioner beskriver orkestreringen i kod (C# eller JavaScript) som visas i Durable Functions-programmönster. En orkestrering kan ha många olika typer av åtgärder, inklusive aktivitetsfunktioner, underorkestreringar, väntan på externa händelser, HTTP och timers. Orchestrator-funktioner kan också interagera med entitetsfunktioner.

Kommentar

Orchestrator-funktioner skrivs med vanlig kod, men det finns strikta krav på hur koden ska skrivas. Mer specifikt måste orchestrator-funktionskoden vara deterministisk. Om du inte följer dessa determinismkrav kan orkestreringsfunktionerna inte köras korrekt. Detaljerad information om dessa krav och hur du kringgår dem finns i avsnittet om kodbegränsningar .

Mer detaljerad information om orkestreringsfunktioner och deras funktioner finns i artikeln Durable orchestrations (Varaktig orkestrering ).

Aktivitetsfunktioner

Aktivitetsfunktioner är den grundläggande arbetsenheten i en varaktig funktionsorkestrering. Aktivitetsfunktioner är de funktioner och uppgifter som samordnas i processen. Du kan till exempel skapa en orkestreringsfunktion för att bearbeta en beställning. Uppgifterna omfattar kontroll av lagret, debitering av kunden och skapande av en leverans. Varje uppgift skulle vara en separat aktivitetsfunktion. Dessa aktivitetsfunktioner kan köras seriellt, parallellt eller någon kombination av båda.

Till skillnad från orkestreringsfunktioner begränsas inte aktivitetsfunktioner i den typ av arbete som du kan utföra i dem. Aktivitetsfunktioner används ofta för att göra nätverksanrop eller köra processorintensiva åtgärder. En aktivitetsfunktion kan också returnera data tillbaka till orkestreringsfunktionen. Durable Task Framework garanterar att varje anropad aktivitetsfunktion körs minst en gång under en orkestreringskörning.

Kommentar

Eftersom aktivitetsfunktioner bara garanterar minst en gång körning rekommenderar vi att du gör din aktivitetsfunktionslogik idempotent när det är möjligt.

Använd en aktivitetsutlösare för att definiera en aktivitetsfunktion. .NET-funktioner får en DurableActivityContext som parameter. Du kan också binda utlösaren till andra JSON-serialiserande objekt för att skicka indata till funktionen. I JavaScript kan du komma åt indata via <activity trigger binding name> egenskapen på context.bindings objektet. Aktivitetsfunktioner kan bara ha ett enda värde som skickas till dem. Om du vill skicka flera värden måste du använda tupplar, matriser eller komplexa typer.

Kommentar

Du kan bara utlösa en aktivitetsfunktion från en orkestreringsfunktion.

Entitetsfunktioner

Entitetsfunktioner definierar åtgärder för att läsa och uppdatera små delar av tillståndet. Vi refererar ofta till dessa tillståndskänsliga entiteter som varaktiga entiteter. Precis som orchestrator-funktioner är entitetsfunktioner funktioner med en särskild utlösartyp, entitetsutlösare. De kan också anropas från klientfunktioner eller från orkestreringsfunktioner. Till skillnad från orkestreringsfunktioner har entitetsfunktioner inte några specifika kodbegränsningar. Entitetsfunktioner hanterar också tillstånd explicit i stället för att implicit representera tillstånd via kontrollflöde.

Kommentar

Entitetsfunktioner och relaterade funktioner är endast tillgängliga i Durable Functions 2.0 och senare.

Mer information om entitetsfunktioner finns i artikeln Durable Entities (Varaktiga entiteter ).

Klientfunktioner

Orchestrator-funktioner utlöses av en orkestreringsutlösarbindning och entitetsfunktioner utlöses av en entitetsutlösarbindning. Båda dessa utlösare fungerar genom att reagera på meddelanden som placeras i en aktivitetshubb. Det primära sättet att leverera dessa meddelanden är att använda en orchestrator-klientbindning eller en entitetsklientbindning inifrån en klientfunktion. Alla icke-orchestrator-funktioner kan vara en klientfunktion. Du kan till exempel utlösa orkestratorn från en HTTP-utlöst funktion, en Azure Event Hub-utlöst funktion osv. Det som gör en funktion till en klientfunktion är dess användning av den varaktiga klientutdatabindningen.

Kommentar

Till skillnad från andra funktionstyper kan orkestrerings- och entitetsfunktioner inte utlösas direkt med hjälp av knapparna i Azure-portalen. Om du vill testa en orkestrerings- eller entitetsfunktion i Azure-portalen måste du i stället köra en klientfunktion som startar en orkestrerings- eller entitetsfunktion som en del av implementeringen. För den enklaste testupplevelsen rekommenderas en manuell utlösarfunktion .

Förutom att utlösa orkestrerings- eller entitetsfunktioner kan den hållbara klientbindningen användas för att interagera med orkestreringar och entiteter som körs. Orkestreringar kan till exempel efterfrågas, avslutas och kan få händelser upphöjda till dem. Mer information om hur du hanterar orkestreringar och entiteter finns i artikeln Instanshantering .

Nästa steg

Kom igång genom att skapa din första varaktiga funktion i C#, JavaScript, Python, PowerShell eller Java.