Con l'introduzione di Azure Durable Functions è stata introdotta una nuova funzionalità che permette di gestire le esecuzioni delle nostre Azure Functions.
L'Azure Durable Functions è basata su Durable Task Framework (https://github.com/Azure/durabletask), una libreria open source su GitHub per la creazione di oggetti di gestione del flusso di più elementi serverless.
Azure Durable Functions fanno molto di più che gestire semplici catene di azioni; possono anche utilizzare qualsiasi operatore di controllo del flusso, operatori condizionali, cicli e persino la gestione degli errori. Per gestire il flusso della nostra applicazione dobbiamo utilizzare i due oggetti forniti dal sistema, ovvero, DurableOrchestrationContext e DurableOrchestrationClient.
L'orchestrator context viene utilizzato per richiamare o schedulare l'esecuzione di una funzione, un evento o un sotto orchestrator.
Consente il passaggio di parametri e la restituzione dell'output della funzione. Non dispone di metodi di dialogo o gestione con altre functions. Per il suo utilizzo all'interno della funzione è necessario aggiungere nella firma del metodo il seguente segmento di codice:
[OrchestrationTrigger]DurableOrchestrationContext orchestrationContext
Con l'orchestrator context possiamo leggere delle variabili in ingresso alla funzione, oppure chiamare una nuova funzione ed infine attendere un evento. Di seguito riportiamo i tre esempi:
var inputParameter = orchestrationContext.GetInput<List<string>>() var funcResult = await context.CallActivityAsync<List<string>>("F1", inputParameter); var eventResult = await orchestrationContext.WaitForExternalEvent<string>("eventName");
Rispetto alla DurableOrchestrationContext che abbiamo appena descritto, il DurableOrchestratorClient può essere utilizzato per gestire le funzioni, il loro stato e il loro ciclo di vita. Per il suo utilizzo all'interno della funzione è necessario aggiungere nella firma del metodo il seguente segmento di codice:
[OrchestrationClient]DurableOrchestrationClient orchestrationClient
Il client può quindi avviare una nuova istanza di una functions ma allo stesso tempo la può terminare. La lettura dello stato di una funzione e il sollevamento di eventi completano le funzioni che si hanno a disposizioni nell'oggetto DurableOrchestratorClient.
string instanceId = await orchestrationClient.StartNewAsync(functionName, eventData); await orchestrationClient.TerminateAsync(instanceId, terminationReason); var status = await orchestrationClient.GetStatusAsync(instanceId); await orchestrationClient.RaiseEventAsync(instanceId, eventName, eventData);
L'utilizzo delle durable functions ci consente di togliere ulteriore complessità al codice e di dialogare con altre functions. La gestione del flusso di esecuzione del codice ora è molto più snello e il sistema ci fornisce molte funzionalità per la gestione dello stato e la collaborazione tra più funzioni.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
Miglioramenti agli screen reader e al contrasto in Angular
Limitare le richieste lato server con l'interactive routing di Blazor 8
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Cancellare una run di un workflow di GitHub
Usare il colore CSS per migliorare lo stile della pagina
Gestire gli accessi con Token su Azure Container Registry
Gestire i dati con Azure Cosmos DB Data Explorer
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Cambiare la chiave di partizionamento di Azure Cosmos DB
Referenziare un @layer più alto in CSS
I più letti di oggi
- Effettuare il binding di contenuti HTML con AngularJS
- Monitorare i cambiamenti di una proprietà dello scope di AngularJS
- Utilizzare le template variable di Angular per mostrare un messaggio di errore
- Ottimizzare il codice JavaScript con i Shorthand Patterns - seconda parte
- Utilizzare l'attributo HTML inert per disabilitare gli eventi in HTML5
- Combinare Container Queries e Media Queries
- Visual Studio 2015 Preview Live - Online
- ReBuild 2020 Live - Online
- Disponibile il nuovo Feature Pack di Visual Studio 2010
- Mono 2.8 aggiunge .NET Framework 4, ASP.NET 4.0 e MVC 2