Tipi e funzionalità di Durable Functions
Durable Functions è un'estensione di Funzioni di Azure. È possibile usare Durable Functions di Azure per l'orchestrazione con stato dell'esecuzione di funzioni. An’app Durable Functions è una soluzione costituita da diverse funzioni di Azure. Le funzioni possono svolgere ruoli diversi in un'orchestrazione di Durable Functions.
Attualmente sono disponibili quattro tipi di funzione Durable Functions in Funzioni di Azure: attività, agente di orchestrazione, entità e client. La parte restante di questa sezione illustra in dettaglio i tipi di funzioni coinvolti in un'orchestrazione.
Funzioni dell'agente di orchestrazione
Le funzioni dell'agente di orchestrazione descrivono le modalità di esecuzione delle azioni e l'ordine in cui vengono eseguite. Le funzioni dell'agente di orchestrazione descrivono l'orchestrazione nel codice (C# o JavaScript) come illustrato nei modelli di applicazione di Durable Functions. Un’orchestrazione può includere vari tipi di azioni, ad esempio funzioni dell’attività, orchestrazioni secondarie, attesa di eventi esterni, HTTP e timer. Le funzioni dell'agente di orchestrazione possono anche interagire con le funzioni dell’entità.
Nota
Le funzioni dell'agente di orchestrazione vengono scritte usando codice ordinario, ma esistono requisiti rigorosi su come scriverlo. In particolare, il codice della funzione dell'agente di orchestrazione deve essere deterministico. Se questi requisiti sul determinismo non vengono rispettati, le funzioni dell'agente di orchestrazione non vengono eseguite correttamente. Per informazioni dettagliate su questi requisiti e su come trovare soluzioni alternative, vedere l’argomento Vincoli del codice.
Per informazioni più dettagliate sulle funzioni dell'agente di orchestrazione e sulle relative funzionalità, vedere l'articolo Orchestrazioni durevoli.
Funzioni di attività
Le funzioni di attività sono l'unità di base del lavoro in un'orchestrazione di Durable Functions. Le funzioni dell’attività sono le funzioni e le attività che vengono orchestrate nel processo. Ad esempio, è possibile creare una funzione di orchestrazione per elaborare un ordine. Le attività implicano il controllo dell'inventario, l'addebito al cliente e la creazione di una spedizione. Ogni attività corrisponde a una diversa funzione di tipo attività. Le funzioni di attività possono essere eseguite in serie, in parallelo o in una combinazione di entrambi.
A differenza delle funzioni di orchestrazione, le funzioni di attività non sono limitate al tipo di lavoro che si può eseguire al loro interno. Le funzioni di attività vengono spesso usate per effettuare chiamate di rete o eseguire operazioni con utilizzo elevato della CPU. Una funzione di attività può anche restituire dati alla funzione di orchestrazione. Durable Task Framework garantisce che ogni funzione dell’attività chiamata venga eseguita almeno una volta durante l’esecuzione di un'orchestrazione.
Nota
Poiché le funzioni dell’attività garantiscono almeno una esecuzione, è consigliabile rendere idempotent la logica della funzione dell’attività quando possibile.
Usare un trigger di attività per definire una funzione dell’attività. Le funzioni .NET ricevono DurableActivityContext
come parametro. È anche possibile associare il trigger a qualsiasi altro oggetto serializzabile in JSON per passare gli input alla funzione. In JavaScript è possibile accedere a un input tramite la proprietà <activity trigger binding name>
nell'context.bindings
oggetto. Alle funzioni di attività può essere passato un solo valore. Per passare più valori, è necessario usare tuple, matrici o tipi complessi.
Nota
È possibile attivare una funzione dell’attività solo da una funzione dell'agente di orchestrazione.
Funzioni di entità
Le funzioni di entità definiscono le operazioni per la lettura e l'aggiornamento di piccole parti dello stato. Queste entità con stato vengono spesso definite entità durevoli. Come le funzioni dell'agente di orchestrazione, le funzioni di entità sono funzioni con un tipo di trigger speciale, il trigger di entità. Possono essere richiamate dalle funzioni di tipo client o orchestrazione. A differenza delle funzioni di orchestrazione, le funzioni di entità non hanno vincoli di codice specifici. Le funzioni di entità inoltre gestiscono lo stato in modo esplicito anziché rappresentarlo in modo implicito usando il flusso di controllo.
Nota
Le funzioni di entità e le funzionalità correlate sono disponibili solo in Durable Functions 2.0 e versioni successive.
Per altre informazioni sulle funzioni dell’entità, vedere l'articolo Entità durevoli.
Funzioni client
Le funzioni dell'agente di orchestrazione vengono attivate da un'associazione di trigger di orchestrazione mentre le funzioni dell’entità vengono attivate da un'associazione di trigger di entità. Entrambi questi trigger funzionano reagendo ai messaggi accodati in un hub attività. Il modo principale per recapitare questi messaggi consiste nell'usare un'associazione client dell'agente di orchestrazione o un'associazione client dell’entità dall'interno di una funzione client. Qualsiasi funzione non di orchestrazione può essere una funzione client. Ad esempio, è possibile attivare l'agente di orchestrazione da una funzione attivata da HTTP, una funzione attivata dall'hub eventi di Azure e così via. Quello che trasforma una funzione in una funzione client è l'uso del binding di output client durevole.
Nota
A differenza di altri tipi di funzione, non è possibile attivare direttamente le funzioni dell'agente di orchestrazione e dell’entità usando i pulsanti nel portale di Azure. Per testare una funzione dell’agente di orchestrazione o dell’entità nel portale di Azure, è invece necessario eseguire una funzione client che avvia un agente di orchestrazione o una funzione dell’entità nell’ambito dell'implementazione. Per l'esperienza di test più semplice, è consigliabile usare una funzione trigger manuale.
Oltre a attivare le funzioni dell’agente di orchestrazione o dell’entità, è possibile usare l'associazione client durevole per interagire con l'esecuzione di orchestrazioni ed entità. Ad esempio, è possibile eseguire query sulle orchestrazioni, terminare le orchestrazioni e generare eventi. Per altre informazioni sulla gestione di orchestrazioni ed entità, vedere l'articolo Gestione delle istanze.
Passaggi successivi
Per iniziare, creare la prima funzione durevole in C#, JavaScript, Python, PowerShello Java.