Wat is Durable Functions?

Voltooid

Met Durable Functions kunt u complexe stateful functies implementeren in een serverloze omgeving.

In het voorbeeldscenario volgt uw bedrijf momenteel een handmatig goedkeuringsproces voor projectontwerpvoorstellen. Het proces bestaat uit meerdere stappen en elke stap in het proces kan in tijdsduur verschillen. De implementatie van een intern geautomatiseerd proces is complex en kostbaar. De coördinatie van elke stap kost moeite. U moet bovendien aangepaste logica in de werkstroom kunnen integreren.

In dit gedeelte leert u over de voordelen van Durable Functions. U krijgt informatie over de verschillende functietypen en belangrijkste concepten die met Durable Functions samenhangen.

Durable Functions

Durable Functions is een uitbreiding op Azure Functions. Terwijl Azure Functions werkt in een staatloze omgeving, kan Durable Functions de status tussen functie-aanroepen behouden. Met deze aanpak kunt u complexe stateful uitvoeringen in een serverloze omgeving vereenvoudigen.

Durable Functions wordt naar behoefte geschaald en biedt een rendabele manier om complexe werkstromen in de cloud te implementeren. Het gebruik van Durable Functions heeft de volgende voordelen:

  • U kunt hiermee gebeurtenisgestuurde code schrijven. Een duurzame functie kan asynchroon wachten op een of meer externe gebeurtenissen en vervolgens een reeks taken uitvoeren als reactie op deze gebeurtenissen.

  • U kunt functies samen koppelen. U kunt algemene patronen implementeren, zoals fan-out/fan-in, waarbij één functie wordt gebruikt om anderen parallel aan te roepen en vervolgens de resultaten te verzamelen.

  • U kunt functies organiseren en coördineren en de volgorde opgeven waarin functies moeten worden uitgevoerd.

  • De status wordt voor u beheerd. U hoeft geen eigen code te schrijven om statusinformatie op te slaan voor een langlopende functie.

Met Durable Functions kunt u stateful werkstromen definiëren met behulp van een indelingsfunctie. Een indeling-functie biedt de volgende extra voordelen:

  • U kunt de werkstromen in code definiëren. U hoeft geen JSON-beschrijving te schrijven of een hulpprogramma te gebruiken voor het ontwerpen van werkstroom.

  • Functies kunnen zowel synchroon als asynchroon worden aangeroepen. De uitvoer van de aangeroepen functies wordt lokaal opgeslagen in variabelen en in latere functieaanroepen gebruikt.

  • Azure controleert automatisch de voortgang van de functie wanneer de functie wacht. Azure kan ervoor kiezen om de functie te deactiveren en de status ervan op te slaan terwijl de functie wacht om resources te behouden en de kosten te verlagen. Wanneer de functie weer wordt gestart, wordt deze door Azure gerehydreerd en wordt de status ervan hersteld.

Functietypen

U kunt drie duurzame functietypen gebruiken: Client, Orchestrator en Activity.

Client-functies zijn het vertrekpunt voor het maken van een Durable Functions-indelingsexemplaar. Deze kunnen worden uitgevoerd als reactie op een gebeurtenis uit een veelheid aan bronnen, zoals een nieuwe HTTP-aanvraag die binnenkomt, een bericht dat wordt geplaatst in een berichtenwachtrij, een gebeurtenis die een gebeurtenisstroom binnenkomt. U kunt ze schrijven in een van de ondersteunde talen.

Orchestrator-functies beschrijven hoe acties worden uitgevoerd en de volgorde waarin ze worden uitgevoerd. U schrijft de indelingslogica in code (C# of JavaScript).

Activiteitsfuncties zijn de basiseenheden van werk in een Durable Functions-indeling. De activiteitfunctie bevat het echte werk dat wordt uitgevoerd door de taken die worden ingedeeld.

Toepassingspatronen

U kunt Durable Functions gebruiken voor het implementeren van algemene werkstroompatronen. Deze patronen zijn onder andere:

  • Functiekoppeling: In dit patroon voert de werkstroom een reeks functies in een opgegeven volgorde uit. De uitvoer van een functie wordt toegepast op de invoer van de volgende functie in de reeks. De uitvoer van de laatste functie wordt gebruikt om een resultaat te genereren.

    Diagram illustrating a function chaining pattern.

  • Uitwaaieren/ventilatoren in: Dit patroon voert meerdere functies parallel uit en wacht tot alle functies zijn voltooid. U kunt de resultaten van de parallelle uitvoeringen aggregeren of gebruiken om een eindresultaat te berekenen.

    Diagram illustrating a fan out/fan in pattern.

  • Asynchrone HTTP-API's: met dit patroon wordt het probleem opgelost van de coördinatiestatus van langlopende bewerkingen met externe clients. Een HTTP-aanroep kan de langdurige actie activeren en de client vervolgens omleiden naar een statuseindpunt. De client kan worden geïnformeerd wanneer de bewerking is voltooid door dit op te vragen bij dit eindpunt.

    Diagram illustrating an async HTTP API pattern.

  • Monitor: Met dit patroon wordt een terugkerend proces in een werkstroom geïmplementeerd, mogelijk op zoek naar een wijziging in de status. U kunt bijvoorbeeld dit patroon gebruiken om peilingen te houden totdat aan bepaalde voorwaarden wordt voldaan.

    Diagram illustrating a monitor pattern.

  • Menselijke interactie: dit patroon combineert geautomatiseerde processen die ook betrekking hebben op menselijke interactie. Een handmatig proces binnen een geautomatiseerd proces is lastig, omdat mensen niet zo beschikbaar en responsief zijn als de meeste computers. U kunt menselijke interactie opnemen met behulp van time-outs en compensatielogica die wordt uitgevoerd als de mens niet correct communiceert binnen een opgegeven reactietijd. Een goedkeuringsproces is een voorbeeld van een proces waarbij menselijke tussenkomst plaatsvindt.

    Diagram illustrating a human interaction pattern.

Vergelijking met Logic Apps

Durable Functions en Logic Apps zijn beide Azure-services waarmee een serverloze werkbelasting mogelijk is. Azure Durable Functions is bedoeld als een krachtige serverloze rekenoptie voor het uitvoeren van aangepaste logica. Azure Logic Apps is beter geschikt voor het integreren van Azure-services en -onderdelen. U kunt beide technologieën gebruiken om complexe indelingen te maken. Met Azure Durable Functions ontwikkelt u indelingen door code te schrijven en de Durable Functions-uitbreiding te gebruiken. Met Logic Apps kunt u indelingen maken met behulp van het ontwerpvlak of door configuratiebestanden te bewerken.

De volgende tabel bevat enkele van de belangrijkste verschillen tussen Azure Durable Functions en Azure Logic Apps.

Opdracht Azure Durable Functions Azure Logic-apps
Ontwikkeling Op basis van code (imperatief) Op basis van ontwerp (declaratief)
Connectiviteit Circa tien ingebouwde bindingstypen. U kunt code schrijven voor aangepaste bindingen. Grote verzameling connectors. Enterprise Integration Pack voor B2B. U kunt ook aangepaste connectors maken.
Acties Elke activiteit is een Azure Function. U schrijft de code voor de activiteitsfuncties. Grote verzameling kant-en-klare acties. U integreert aangepaste logica via aangepaste connectors.
Bewaking Azure Application Insights Azure Portal, Azure Monitor-logboeken
Beheer REST API, PowerShell, Visual Studio Azure Portal, REST API, PowerShell, Visual Studio, Visual Studio Code-extensie

Test uw kennis

1.

Wat is Durable Functions?

2.

Welke van de volgende alternatieven beschrijft de rol van de Orchestrator-functie in een werkstroom het beste?

3.

In welke van de volgende alternatieven wordt het beste uitgelegd waarom het patroon met de toepassing van menselijke tussenkomst voordeel heeft van Durable Functions?