Durable Functions typer och funktioner

Durable Functions är en förlängning av Azure Functions. Du kan använda Durable Functions för tillståndskänslig orkestrering av funktionskörning. En beständig 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, orkestrerare, entitet och klient. Resten av det här avsnittet innehåller 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) enligt 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.

Anteckning

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 orkestrering av hållbara funktioner. Aktivitetsfunktioner är de funktioner och uppgifter som samordnas i processen. Du kan till exempel skapa en orkestreringsfunktion för att bearbeta en order. Uppgifterna omfattar att kontrollera lagret, debitera kunden och skapa 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 är aktivitetsfunktioner inte begränsade 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 orchestrator-funktionen. Durable Task Framework garanterar att varje anropad aktivitetsfunktion körs minst en gång under en orkestreringskörning.

Anteckning

Eftersom aktivitetsfunktioner bara garanterar körning minst en gång 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 tar emot som DurableActivityContext en 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 för objektetcontext.bindings. 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.

Anteckning

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 kallar ofta dessa tillståndskänsliga entiteter för 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 orchestrator-funktioner 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.

Anteckning

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

Mer information om entitetsfunktioner finns i artikeln 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-orkestreringsfunktioner kan vara en klientfunktion. Du kan till exempel utlösa orkestreraren 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.

Anteckning

Till skillnad från andra funktionstyper kan orkestrerings- och entitetsfunktioner inte utlösas direkt med 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 händelser kan aktiveras 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 beständiga funktion i C#, JavaScript, Python, PowerShell eller Java.