Condividi tramite


Panoramica delle versioni di Durable Functions

Durable Functions è un'estensione di Azure Functions e Azure Processi Web 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 introduttiva.

Microsoft.Azure.WebJobs.Extensions.DurableTask v3.x

Questa sezione presenta il nuovo Microsoft. Azure. Pacchetto WebJobs.Extensions.DurableTask v3 (denominato WebJobs.Extensions.DurableTask nelle sezioni successive) e fornisce 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 Durable Functions .NET, Microsoft.Azure.Functions.Worker.Extensions.DurableTask, fa riferimento a Microsoft.Azure.WebJobs.Extensions.DurableTask come assembly sottostante. Pertanto, questo aggiornamento si applica anche a Microsoft. Azure. Functions.Worker.Extensions.DurableTask, a partire dalla versione 1.2.x.

Nuovo SDK di Azure Storage

Per impostazione predefinita, Durable Functions usare Azure Storage come back-end di archiviazione per salvare in modo permanente lo stato dell'applicazione. In WebJobs.Extensions.DurableTask v3 il back-end Azure Storage è stato aggiornato per usare le versioni più recenti degli SDK di Azure Storage: Azure. Data.Tables, Azure. Storage.Blobs e Azure. Storage.Queues. I nuovi SDK Azure Storage 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 Azure Storage

Nel backend di Azure Storage, il gestore delle partizioni è responsabile della distribuzione delle partizioni/code di controllo tra gli operatori. Il pacchetto WebJobs.Extensions.DurableTask v3 usa Gestione partizioni V3 per impostazione predefinita, che è una nuova progettazione che sfrutta le tabelle Azure per gestire le assegnazioni di partizione anziché Azure lease BLOB. 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 Azure Functions, il supporto per il quale è pianificato per terminare September 2026. Se è necessario usare il runtime delle Funzioni v1, si prega di usare una versione dell'estensione Durable Functions inferiore a v2.11.0. Tenere presente che quando giunge il termine pianificato del supporto, Durable Functions perderà anche il supporto per il runtime v1.

aggiornamento di .NET Framework

WebJobs.Extensions.DurableTask v3 aggiorna il framework di .NET da .NET Core 3.1 a .NET 6, offrendo prestazioni migliorate e maggiore compatibilità con le funzionalità e le librerie moderne di .NET. Questo aggiornamento è allineato alle versioni future dei bundle di estensioni Azure Functions.

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.

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 v1.1.5 o inferiore se si sta tornando da v1.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à di 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 a Durable Functions in dotnet in modalità worker isolato. 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 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 Durable HTTP 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 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 binding Durable Functions nel progetto.

JavaScript, Python e PowerShell

Durable Functions 2.x è disponibile a partire dalla versione 2.x del bundle di estensione Azure Functions.

Il supporto per Python in Durable Functions richiede Durable Functions 2.x o versioni successive.

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 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 Azure Functions. È necessario usare il runtime Azure Functions 4.0 per eseguire Java funzioni.

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)"
    }
}

.NET

Aggiornare il progetto di .NET per usare la versione più recente dell'estensione Durable Functions binding.

Per altre informazioni, vedere Register Azure Functions binding extensions.

Aggiornare il codice

Durable Functions 2.x introduce diverse modifiche significative. Le applicazioni di Durable Functions 1.x non sono compatibili con Durable Functions 2.x senza apportare modifiche al codice. Questa sezione elenca alcune delle modifiche da apportare durante l'aggiornamento delle funzioni 1.x alla versione 2.x.

Host.json schema

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 dell'archiviazione.
  • "tracing" per la configurazione di tracciamento e registrazione.
  • "notifications" (e la "eventGrid" sottosezione) per la configurazione delle notifiche di Event Grid.

Per informazioni dettagliate, vedere la documentazione di riferimento 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 in modo esplicito 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 esecuzione.

Modifiche all'interfaccia pubblica (solo .NET)

Nella versione 1.x i vari oggetti context supportati da Durable Functions hanno classi di base astratte destinate all'uso negli unit test. Nell'ambito di Durable Functions 2.x, queste classi base astratte vengono sostituite con le interfacce.

La tabella seguente rappresenta le modifiche principali:

1.x 2.x
DurableOrchestrationClientBase IDurableOrchestrationClient oppure IDurableClient
DurableOrchestrationContext oppure DurableOrchestrationContextBase IDurableOrchestrationContext
DurableActivityContext oppure 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 inesistente portava a un fallimento silenzioso. A partire dalla versione 2.x, la generazione di un evento per un'orchestrazione inesistente comporta un'eccezione.