Durable Functions typen en functies

Durable Functions is een uitbreiding op Azure Functions. U kunt Durable Functions gebruiken voor stateful indeling van de uitvoering van functies. Een durable function-app is een oplossing die bestaat uit verschillende Azure-functies. Functies kunnen verschillende rollen spelen in een duurzame functieindeling.

Er zijn momenteel vier typen duurzame functies in Azure Functions: activiteit, orchestrator, entiteit en client. In de rest van deze sectie wordt meer ingegaan op de typen functies die betrokken zijn bij een indeling.

Orchestrator-functies

Orchestratorfuncties beschrijven hoe acties worden uitgevoerd en de volgorde waarin acties worden uitgevoerd. Orchestratorfuncties beschrijven de indeling in code (C# of JavaScript), zoals wordt weergegeven in Durable Functions toepassingspatronen. Een indeling kan veel verschillende soorten acties hebben, waaronder activiteitsfuncties, subindelingen, wachten op externe gebeurtenissen, HTTP en timers. Orchestrator-functies kunnen ook communiceren met entiteitsfuncties.

Notitie

Orchestrator-functies worden geschreven met gewone code, maar er zijn strikte vereisten voor het schrijven van de code. Orchestrator-functiecode moet deterministisch zijn. Als u niet aan deze determinismevereisten voldoet, kan dit ertoe leiden dat orchestrator-functies niet correct worden uitgevoerd. Gedetailleerde informatie over deze vereisten en hoe u deze kunt omzeilen, vindt u in het onderwerp codebeperkingen .

Zie het artikel Durable Orchestrations (Duurzame indelingen ) voor meer informatie over orchestratorfuncties en de bijbehorende functies.

Activiteitsfuncties

Activiteitsfuncties zijn de basiseenheid van het werk in een indeling van duurzame functies. Activiteitsfuncties zijn de functies en taken die in het proces worden ingedeeld. U kunt bijvoorbeeld een orchestratorfunctie maken om een order te verwerken. De taken omvatten het controleren van de voorraad, het in rekening brengen van de klant en het maken van een zending. Elke taak zou een afzonderlijke activiteitsfunctie zijn. Deze activiteitsfuncties kunnen serieel, parallel of een combinatie van beide worden uitgevoerd.

In tegenstelling tot orchestratorfuncties worden activiteitsfuncties niet beperkt in het type werk dat u erin kunt doen. Activiteitsfuncties worden vaak gebruikt om netwerkoproepen te doen of CPU-intensieve bewerkingen uit te voeren. Een activiteitsfunctie kan ook gegevens retourneren naar de orchestrator-functie. Het Durable Task Framework garandeert dat elke aangeroepen activiteitsfunctie ten minste één keer wordt uitgevoerd tijdens de uitvoering van een indeling.

Notitie

Omdat activiteitsfuncties slechts ten minste eenmaal uitvoering garanderen, raden we u aan uw activiteitsfunctielogica waar mogelijk idempotent te maken.

Een activiteitstrigger gebruiken om een activiteitsfunctie te definiëren. .NET-functies ontvangen een DurableActivityContext als parameter. U kunt de trigger ook binden aan elk ander JSON-serializeable object om invoer door te geven aan de functie. In JavaScript hebt u toegang tot een invoer via de <activity trigger binding name> eigenschap voor het context.bindings object. Aan activiteitsfuncties kan slechts één waarde worden doorgegeven. Als u meerdere waarden wilt doorgeven, moet u tuples, matrices of complexe typen gebruiken.

Notitie

U kunt een activiteitsfunctie alleen activeren vanuit een orchestratorfunctie.

Entiteitsfuncties

Entiteitsfuncties definiëren bewerkingen voor het lezen en bijwerken van kleine stukjes status. We noemen deze stateful entiteiten vaak duurzame entiteiten. Net als orchestratorfuncties zijn entiteitsfuncties functies met een speciaal triggertype, entiteittrigger. Ze kunnen ook worden aangeroepen vanuit clientfuncties of orchestratorfuncties. In tegenstelling tot orchestratorfuncties hebben entiteitsfuncties geen specifieke codebeperkingen. Entiteitsfuncties beheren de status ook expliciet in plaats van impliciet de status aan te geven via de controlestroom.

Notitie

Entiteitsfuncties en gerelateerde functionaliteit zijn alleen beschikbaar in Durable Functions 2.0 en hoger.

Zie het artikel Durable Entities voor meer informatie over entiteitsfuncties.

Clientfuncties

Orchestrator-functies worden geactiveerd door een indelingstriggerbinding en entiteitsfuncties worden geactiveerd door een entiteitstriggerbinding. Beide triggers werken door te reageren op berichten die in een taakhub worden geplaatst. De primaire manier om deze berichten af te leveren, is met behulp van een orchestratorclientbinding of een entiteitsclientbinding vanuit een clientfunctie. Elke niet-orchestratorfunctie kan een clientfunctie zijn. U kunt bijvoorbeeld de orchestrator activeren vanuit een door HTTP geactiveerde functie, een door Azure Event Hub geactiveerde functie, enzovoort. Wat een functie een clientfunctie maakt, is het gebruik van de duurzame clientuitvoerbinding.

Notitie

In tegenstelling tot andere functietypen kunnen orchestrator- en entiteitsfuncties niet rechtstreeks worden geactiveerd met behulp van de knoppen in Azure Portal. Als u een orchestrator- of entiteitsfunctie in Azure Portal wilt testen, moet u in plaats daarvan een clientfunctie uitvoeren waarmee een orchestrator- of entiteitsfunctie wordt gestart als onderdeel van de implementatie ervan. Voor de eenvoudigste testervaring wordt een handmatige triggerfunctie aanbevolen.

Naast het activeren van orchestrator- of entiteitsfuncties, kan de duurzame clientbinding worden gebruikt om te communiceren met actieve indelingen en entiteiten. Indelingen kunnen bijvoorbeeld worden opgevraagd, beëindigd en er kunnen gebeurtenissen worden gegenereerd. Zie het artikel Exemplaarbeheer voor meer informatie over het beheren van indelingen en entiteiten.

Volgende stappen

Maak uw eerste duurzame functie in C#, JavaScript, Python, PowerShell of Java om aan de slag te gaan.