Panoramica delle versioni di Durable Functions
Funzioni permanenti è un'estensione di Funzioni di Azure e Processi Web di Azure che consente di scrivere funzioni con stato in un ambiente senza server. L'estensione gestisce automaticamente lo stato, i checkpoint e i riavvii. Se non si ha già familiarità con Durable Functions, vedere la documentazione di panoramica.
Nuove funzionalità in 2.x
Questa sezione descrive le funzionalità di Durable Functions aggiunte nella versione 2.x.
Nota
Questa sezione non si applica a Durable Functions nel ruolo di lavoro isolato dotnet. Per questo, vedere Panoramica del processo isolato per le funzioni durevoli.
Entità durevoli
In Durable Functions 2.x è stato introdotto un nuovo concetto di funzioni di entità.
Le funzioni di entità definiscono le operazioni per la lettura e l'aggiornamento di piccole parti di stato, note come 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à. A differenza delle funzioni dell'agente di orchestrazione, però, le funzioni di entità non hanno vincoli di codice specifici. Le funzioni di entità, inoltre, gestiscono lo stato in modo esplicito anziché in modo implicito, rappresentandolo tramite flusso di controllo.
Per altre informazioni, vedere l'articolo sulle entità durevoli .
HTTP durevole
In Durable Functions 2.x è stata introdotta una nuova funzionalità HTTP durevole che consente di:
- Chiamare LE API HTTP direttamente dalle funzioni di orchestrazione (con alcune limitazioni documentate).
- Implementare il polling di stato HTTP 202 lato client automatico.
- Supporto predefinito per le identità gestite di Azure.
Per altre informazioni, vedere l'articolo sulle funzionalità HTTP .
Eseguire la migrazione da 1.x a 2.x
Questa sezione descrive come eseguire la migrazione della versione 1.x esistente Durable Functions alla versione 2.x per sfruttare le nuove funzionalità.
Aggiornare l'estensione
Installare la versione 2.x più recente dell'estensione di associazioni Durable Functions nel progetto.
JavaScript, Python e PowerShell
Durable Functions 2.x è disponibile a partire dalla versione 2.x del bundle di estensione Funzioni di Azure.
Il supporto di Python in Durable Functions richiede Durable Functions 2.x o versione successiva.
Per aggiornare la versione del bundle di estensione nel progetto, aprire host.json e aggiornare la extensionBundle
sezione per usare la versione 4.x ([4.*, 5.0.0)
).
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
Nota
Se Visual Studio Code non visualizza i modelli corretti dopo aver modificato la versione del bundle di estensione, ricaricare la finestra eseguendo il comando Developer: Ricarica finestra (CTRL+R in Windows e Linux, Command+R in macOS).
Java
Durable Functions 2.x è disponibile a partire dalla versione 4.x del bundle di estensione Funzioni di Azure. È necessario usare il runtime Funzioni di Azure 4.0 per eseguire funzioni Java.
Per aggiornare la versione del bundle di estensione nel progetto, aprire host.json e aggiornare la extensionBundle
sezione per usare la versione 4.x ([4.*, 5.0.0)
).
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
.NET
Aggiornare il progetto .NET per usare la versione più recente dell'estensione binding Durable Functions.
Per altre informazioni, vedere Registrare le estensioni di associazione Funzioni di Azure.
Aggiornare il codice
Durable Functions 2.x introduce diverse modifiche di rilievo. Durable Functions applicazioni 1.x non sono compatibili con Durable Functions 2.x senza modifiche al codice. Questa sezione elenca alcune delle modifiche da apportare durante l'aggiornamento delle funzioni 1.x alla versione 2.x.
Schema Host.json
Durable Functions 2.x usa un nuovo schema host.json. Le modifiche principali da 1.x includono:
-
"storageProvider"
(e la sottosezione) per la configurazione specifica dell'archiviazione"azureStorage"
. -
"tracing"
per la traccia e la configurazione della registrazione. -
"notifications"
(e la sottosezione) per la"eventGrid"
configurazione della notifica griglia di eventi.
Per informazioni dettagliate, vedere la documentazione di riferimento Durable Functions host.json.
Modifiche del nome dell'hub attività predefinite
Nella versione 1.x, se un nome dell'hub attività non è stato specificato in host.json, è stato predefinito "DurableFunctionsHub". Nella versione 2.x il nome dell'hub attività predefinito è ora derivato dal nome dell'app per le funzioni. A causa di questo, se non è stato specificato un nome dell'hub attività durante l'aggiornamento a 2.x, il codice verrà operativo con un nuovo hub attività e tutte le orchestrazioni in anteprima non avranno più un'applicazione che li elabora. Per risolvere questo problema, è possibile impostare in modo esplicito il nome dell'hub attività sul valore predefinito v1.x di "DurableFunctionsHub" oppure seguire le indicazioni sulla distribuzione in tempo di inattività zero per informazioni dettagliate su come gestire le modifiche di rilievo per le orchestrazioni in volo.
Modifiche all'interfaccia pubblica (solo.NET)
Nella versione 1.x i vari oggetti di contesto supportati da Durable Functions hanno classi di base astratte destinate all'uso in unit test. Come parte di Durable Functions 2.x, queste classi di base astratte vengono sostituite con interfacce.
La tabella seguente rappresenta le modifiche principali:
1.x | 2.x |
---|---|
DurableOrchestrationClientBase |
IDurableOrchestrationClient o IDurableClient |
DurableOrchestrationContext o DurableOrchestrationContextBase |
IDurableOrchestrationContext |
DurableActivityContext o DurableActivityContextBase |
IDurableActivityContext |
OrchestrationClientAttribute |
DurableClientAttribute |
Nel caso in cui una classe di base astratta contenga metodi virtuali, questi metodi virtuali sono stati sostituiti da metodi di estensione definiti in DurableContextExtensions
.
modifiche function.json
In Durable Functions 1.x l'associazione client di orchestrazione usa un type
oggetto .orchestrationClient
La versione 2.x usa durableClient
invece.
Generare modifiche all'evento
In Durable Functions 1.x chiamare l'API evento di generazione e specificare un'istanza che non esiste ha causato un errore invisibile all'utente. A partire da 2.x, la generazione di un evento a un'orchestrazione non esistente comporta un'eccezione.