Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Durable Functions è un'estensione di Funzioni di Azure e processi Web di Azure che consente di scrivere funzioni con stato in un ambiente serverless. 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.
Microsoft.Azure.WebJobs.Extensions.DurableTask v3.x
In questa sezione viene introdotto il nuovo pacchetto Microsoft.Azure.WebJobs.Extensions.DurableTask v3 (denominato WebJobs.Extensions.DurableTask nelle sezioni successive) e vengono fornite informazioni dettagliate sugli aggiornamenti e sulle modifiche. Questo aggiornamento viene considerato solo una modifica di rilievo per i clienti che eseguono app Durable C# che usano il modello in-process.
Annotazioni
Il pacchetto out-of-process di Durable Functions .NET, Microsoft.Azure.Functions.Worker.Extensions.DurableTask, fa riferimento a Microsoft.Azure.WebJobs.Extensions.DurableTask come assembly sottostante. Questo aggiornamento si applica quindi anche a Microsoft.Azure.Functions.Worker.Extensions.DurableTask, a partire dalla versione 1.2.x.
Nuovo SDK di Archiviazione di Azure
Per impostazione predefinita, Durable Functions usa Archiviazione di Azure come back-end di archiviazione per salvare in modo permanente lo stato dell'applicazione. In WebJobs.Extensions.DurableTask v3 il back-end di Archiviazione di Azure è stato aggiornato per usare le versioni più recenti degli SDK di Archiviazione di Azure: Azure.Data.Tables, Azure.Storage.Blobs e Azure.Storage.Queues. I nuovi SDK di Archiviazione di Azure sono più protetti e offrono un supporto avanzato per l'identità gestita. Offrono anche prestazioni migliori, gestione dei dati più efficiente e altre funzionalità di archiviazione più recenti.
Miglioramento dell'efficienza dei costi per il back-end di Archiviazione di Azure
Nel back-end di Archiviazione di Azure, la Gestione partizioni è responsabile della distribuzione di partizioni/code di controllo tra i lavoratori. Il pacchetto WebJobs.Extensions.DurableTask v3 usa Gestione partizioni V3 per impostazione predefinita, che è una nuova progettazione che sfrutta le tabelle di Azure per gestire le assegnazioni di partizione anziché i lease BLOB di Azure. Questa progettazione può ridurre significativamente i costi di archiviazione semplificando il debug. Quando si usa Partition Manager V3, viene creata una nuova tabella denominata Partitions
, nell'account di archiviazione, consentendo di controllare facilmente le informazioni sulla partizione.
Rimozione del supporto per il runtime di Funzioni v1
WebJobs.Extensions.DurableTask v3 non supporta più la versione 1.x del runtime di Funzioni di Azure, il supporto per il quale è pianificata la fine a settembre 2026. Se è necessario utilizzare il runtime di Funzioni v1, utilizza una versione dell'estensione Durable Functions inferiore alla v2.11.0. Tenere presente che, quando giungerà la fine pianificata del supporto, Durable Functions abbandonerà il supporto per il runtime v1.
Aggiornamento di .NET Framework
WebJobs.Extensions.DurableTask v3 aggiorna .NET Framework da .NET Core 3.1 a .NET 6, offrendo prestazioni migliorate e compatibilità migliorata con le moderne funzionalità e librerie .NET. Questo aggiornamento è allineato alle versioni future dei bundle di estensioni di Funzioni di Azure.
Migrazione da WebJobs.Extensions.DurableTask v2.x a v3.x
La migrazione da WebJobs.Extensions.DurableTask v2.x a v3.x è progettata per essere semplice senza apportare modifiche al codice, perché le modifiche sono in background. È sufficiente aggiornare le dipendenze per iniziare a sfruttare le nuove funzionalità e i miglioramenti in v3.x.
- Per gli utenti .NET in-process: aggiornare a Microsoft.Azure.WebJobs.Extensions.DurableTask versione 3.0.0 o successiva.
- Per gli utenti isolati .NET: eseguire l'aggiornamento a Microsoft.Azure.Functions.Worker.Extensions.DurableTask versione 1.2.0 o successiva.
- Per gli utenti di altri linguaggi con bundle di estensioni: il supporto per Durable Functions v3 in Bundle di estensioni sarà disponibile a partire dalla versione 4.22.0.
Annotazioni
WebJobs.Extensions.DurableTask v3 usa la versione più recente di Azure Storage SDK, che ha una codifica di testo diversa (Base64) rispetto a quella usata in v2 (UTF-8). Se è necessario eseguire il downgrade da v3.x a v2.x, per garantire la compatibilità con le versioni precedenti, usare almeno v2.13.5. Per gli utenti .NET out-of-process con Microsoft.Azure.Functions.Worker.Extensions.DurableTask, effettuare il downgrade alla versione 1.1.5 o superiore, qualora si debba tornare indietro dalla versione 1.2.x o superiore.
Supporto e manutenzione di v2.x
WebJobs.Extensions.DurableTask v2.x continua a ricevere aggiornamenti della sicurezza e correzioni di bug, assicurandosi che le applicazioni esistenti rimangano sicure e stabili. Tuttavia, tutte le nuove funzionalità e i miglioramenti vengono aggiunti esclusivamente a v3.x. Per questo motivo, è consigliabile eseguire l'aggiornamento a WebJobs.Extensions.DurableTask v3 non appena è possibile sfruttare le funzionalità più recenti e i miglioramenti continui.
Nuove funzionalità in Microsoft.Azure.WebJobs.Extensions.DurableTask v2.x
Questa sezione descrive le funzionalità di Durable Functions aggiunte nella versione 2.x.
Annotazioni
Questa sezione non si applica alle Durable Functions nel worker isolato di dotnet. Per questo, vedere Durable Functions isolated process overview (Panoramica del processo isolato delle 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, trigger di entità. A differenza delle funzioni dell'agente di orchestrazione, le funzioni di entità non hanno vincoli di codice specifici. Le funzioni di entità gestiscono anche lo stato in modo esplicito anziché rappresentare in modo implicito lo stato tramite il 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 automatico dello stato HTTP 202 sul lato client.
- 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 Durable Functions esistente alla versione 2.x per sfruttare le nuove funzionalità.
Aggiornare l'estensione
Installare la versione 2.x più recente dell'estensione binding di Durable Functions nel progetto.
JavaScript, Python e PowerShell
Durable Functions 2.x è disponibile a partire dalla versione 2.x del pacchetto di estensioni di Azure Functions.
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 sezione per usare la extensionBundle
versione 4.x ([4.*, 5.0.0)
).
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
Annotazioni
Se Visual Studio Code non visualizza i modelli corretti dopo aver modificato la versione del bundle dell'estensione, ricaricare la finestra eseguendo il comando Developer: Reload Window (CTRL+R in Windows e Linux, Command+R in macOS).
Giava
Durable Functions 2.x è disponibile a partire dalla versione 4.x del bundle delle estensioni delle Funzioni di Azure. Per eseguire funzioni Java, è necessario usare il runtime di Funzioni di Azure 4.0.
Per aggiornare la versione del bundle di estensione nel progetto, aprire host.json e aggiornare la sezione per usare la extensionBundle
versione 4.x ([4.*, 5.0.0)
).
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
.RETE
Aggiornare il progetto .NET per usare la versione più recente dell'estensione binding di Durable Functions.
Per altre informazioni, vedere Registrare le estensioni di associazione di Funzioni di Azure .
Aggiornare il codice
Durable Functions 2.x introduce diverse modifiche di rilievo. Le applicazioni Durable Functions 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 principali modifiche apportate dalla versione 1.x includono:
-
"storageProvider"
(e la"azureStorage"
sottosezione) per la configurazione specifica della memorizzazione. -
"tracing"
per la configurazione di tracciamento e registrazione dei log. -
"notifications"
(e la sottosezione"eventGrid"
) per la configurazione delle notifiche di Event Grid.
Per informazioni dettagliate, vedere la documentazione di riferimento di Durable Functions host.json .
Modifiche al nome predefinito dell'hub di attività
Nella versione 1.x, se un nome dell'hub attività non è stato specificato in host.json, per impostazione predefinita è "DurableFunctionsHub". Nella versione 2.x il nome predefinito dell'hub attività è ora derivato dal nome dell'app per le funzioni. Per questo motivo, se non è stato specificato un nome dell'hub attività durante l'aggiornamento alla versione 2.x, il codice funzionerà con un nuovo hub attività e tutte le orchestrazioni in corso non avranno più un'applicazione che le elabora. Per risolvere questo problema, è possibile impostare esplicitamente il nome dell'hub attività sul valore predefinito v1.x di "DurableFunctionsHub", oppure seguire le indicazioni sulla distribuzione senza tempi di inattività per informazioni dettagliate su come gestire le modifiche significative per le orchestrazioni in corso.
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 le 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 base astratta conteneva metodi virtuali, questi metodi virtuali sono stati sostituiti da metodi di estensione definiti in DurableContextExtensions
.
function.json modifiche
In Durable Functions 1.x, l'associazione client di orchestrazione usa un type
di orchestrationClient
. La versione 2.x usa durableClient
invece.
Generare modifiche all'evento
In Durable Functions 1.x, chiamare l'API raise event e specificare un'istanza che non esisteva ha provocato un errore silenzioso. A partire dalla versione 2.x, la generazione di un evento per un'orchestrazione inesistente comporta un'eccezione.