Delen via


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 duurzame functie-app is een oplossing die bestaat uit verschillende Azure-functies. Functies kunnen verschillende rollen spelen in een duurzame functie-indeling.

Er zijn momenteel vier duurzame functietypen in Azure Functions: activiteit, orchestrator, entiteit en client. De rest van deze sectie bevat meer informatie over de typen functies die betrokken zijn bij een indeling.

Orchestratorfuncties

Orchestrator-functies beschrijven hoe acties worden uitgevoerd en de volgorde waarin acties worden uitgevoerd. Orchestrator-functies 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. In het bijzonder moet de orchestratorfunctiecode deterministisch zijn. Als u niet aan deze determinismevereisten voldoet, kunnen orchestratorfuncties 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 voor meer informatie over orchestratorfuncties en hun functies.

Activiteitsfuncties

Activiteitsfuncties zijn de basiseenheid van het werk in een duurzame functie-indeling. Activiteitsfuncties zijn de functies en taken die in het proces zijn ingedeeld. U kunt bijvoorbeeld een orchestratorfunctie maken om een order te verwerken. De taken omvatten het controleren van de inventaris, het opladen 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 uitvoeren. Activiteitsfuncties worden vaak gebruikt om netwerkoproepen te maken of CPU-intensieve bewerkingen uit te voeren. Een activiteitsfunctie kan ook gegevens terugsturen naar de orchestratorfunctie. 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 zo mogelijk idempotent te maken.

Gebruik een activiteitstrigger 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 op het context.bindings object. Activiteitsfuncties kunnen slechts één waarde hebben die eraan is 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 verwijzen vaak naar deze stateful entiteiten als duurzame entiteiten. Net als orchestratorfuncties zijn entiteitsfuncties functies met een speciaal triggertype, entiteitstrigger. Ze kunnen ook worden aangeroepen vanuit clientfuncties of orchestratorfuncties. In tegenstelling tot orchestratorfuncties hebben entiteitsfuncties geen specifieke codebeperkingen. Entiteitsfuncties beheren ook de status expliciet in plaats van de status impliciet weer 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 orchestrationtriggerbinding en entiteitsfuncties worden geactiveerd door een entiteitstriggerbinding. Beide triggers werken door te reageren op berichten die naar een taakhub worden verzonden. De primaire manier om deze berichten te leveren, is door gebruik te maken van een orchestratorclientbinding of een entiteitsclientbinding vanuit een clientfunctie. Elke niet-orchestratorfunctie kan een clientfunctie zijn. U kunt de orchestrator bijvoorbeeld 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 wilt testen in Azure Portal, moet u in plaats daarvan een clientfunctie uitvoeren waarmee een orchestrator- of entiteitsfunctie wordt gestart als onderdeel van de implementatie. Voor de eenvoudigste testervaring wordt een handmatige triggerfunctie aanbevolen.

Naast het activeren van orchestrator- of entiteitsfuncties kan de durable clientbinding worden gebruikt om te communiceren met actieve indelingen en entiteiten. Orchestrations kunnen bijvoorbeeld worden opgevraagd, beëindigd en kunnen er 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.