All'interno del servizio Azure Functions, è stato recentemente introdotta una nuova funzionalità: Azure Durable Function. Consente all'applicazione serverless di memorizzare e gestire lo stato durante l'esecuzione. Vengono forniti, in maniera trasparente, checkpoint sullo stato di esecuzione della function e questo ci aiuta a gestire riavvii imprevisti.
Per gestire lo stato abbiamo ora a disposizione un orchestrator function che consente di definire, tramite il nostro codice, un flusso di esecuzione tra più Azure Functions. La definizione del flusso non è quindi grafica come avviene nel servizio Logic Apps, ma deve essere esplicitata dal programmatore.
Il tipico scenario di utilizzo di una Azure Durable Functions trova applicazione quando andiamo a definire una catena di funzioni che tra di loro condividono un dato; tipicamente le variabili di uscita di una funzione e la variabile di ingresso della successiva.

L'orchestrator di funzioni consente salvare lo stato della variabile di output, inoltre ogni qual volta una funzione rimane in attesa del completamento della successiva viene eseguito il check point della funzione. Lo stato di una funzione, gestito da Azure Durable Functions, non viene mai perso in caso la macchina virtuale venga spenta o riavviata.
Una applicazione di Azure Durable Functions è la seguente; vengono richiamate 3 diverse funzioni sequenzialmente. Prima F1, poi F2 ed infine F3.
public static async Task<object> Run(DurableOrchestrationContext ctx) { var x = await ctx.CallActivityAsync<object>("F1"); var y = await ctx.CallActivityAsync<object>("F2", x); return await ctx.CallActivityAsync<object>("F3", y); }
Dietro le quindi l'OrchestratorContext ci agevola notevolmente il lavoro. Ogni qualvolta rimaniamo in attesa del completamento della funzione (await), viene memorizzato un checkpoint con lo stato della funzione chiamante. In questo modo è possibile ripristinare lo stato in ogni momento dell'esecuzione anche su una istanza o una macchina diversa.
Il checkpoint avviene tramite il pattern Event-Sourcing che oltre a memorizzare lo stato corrente del dato, conserva tutti i cambiamenti che l'oggetto ha subito nel tempo. L'utilizzo dell'Event-Sourcing è trasparente e le modifiche che avvengono nel sistema vengono archiviate in un durable storage.
Le Azure Durable Functions utilizzano l'Azure Storage Account e più specificatamente blob, queue e tables.
Viene utilizzato di default lo storage associato al servizio impostato per Azure Functions ma è possibile utilizzarne un diverso per questioni di performance. La gestione della scrittura dei dati sull'Azure Storage è responsabilità diretta delle durable function e non è richiesto al programmatore la loro gestione.
Da sottolineare che in questo momento l'unico linguaggio supportato per la funzionalità descritta è il C#.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Copiare automaticamente le secret tra più repository di GitHub
Ottimizzare serializzazione e deserializzaione tramite le options con System.Text.Json
Creare attributi generici in C#
Effettuare test di carico con Azure Load Testing
ChatOps con GitHub
Usare Refit e Polly in Blazor per creare client affidabili e fortemente tipizzati
Monitorare i server on-premises con Azure Arc
Montare blob e file share su Azure App Service
.NET 7 Live Q&A
Abilitare automaticamente Dependabot in tutti i repository di una organizzazione su GitHub
Creare applicazioni distribuite con Azure Container Apps e Dapr
Specificare il versioning nel path degli URL in ASP.NET Web API
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- .NET Conference Italia 2022 - Milano e Online