Condividi tramite


Scegliere il modello di hosting

Come descritto in What is Durable Task?, il framework Durable Task supporta due modelli di hosting:

Entrambi i modelli di hosting offrono le stesse funzionalità di esecuzione durevoli principali (orchestrazioni, attività, timer, eventi esterni e altro ancora), ma differiscono in che modo l'applicazione è ospitata, ridimensionata e distribuita.

In generale, in cui l'applicazione viene eseguita determina il modello di hosting usato. Se si basa su Azure Functions, usare Durable Functions. Se utilizzi qualsiasi altra piattaforma di calcolo, utilizzi gli SDK autonomi di Durable Task.

Scelta basata sulla piattaforma di hosting

Se si conosce già la piattaforma di hosting dell'applicazione, la tabella seguente consente di determinare quale modello di hosting usare:

Piattaforma di hosting Modello di hosting
Azure Functions (Consumo, Consumo flessibile, Premium) Funzioni durevoli
Azure Container Apps (con runtime di Azure Functions) O uno o l'altro
Azure App Service (con runtime di Azure Functions) O uno o l'altro
Azure Kubernetes Service (AKS) SDK per attività permanenti autonome
Macchine virtuali o locali SDK per attività permanenti autonome

Annotazioni

Azure App Service e Azure Container Apps possono entrambi ospitare il runtime di Azure Functions, tramite l'integrazione completamente gestita di Azure Functions o distribuendo direttamente il runtime di Functions. Entrambe le piattaforme supportano quindi entrambi i modelli di hosting. Per altre informazioni sui modelli di hosting Azure Functions, vedere Azure Functions piani di hosting.

Confronto dei modelli di hosting

La tabella seguente riepiloga le differenze principali tra i due modelli di hosting:

Durable Functions (Azure Functions) Insiemi di sviluppo software autonomi per attività persistenti (ospitato autonomamente)
Servizio di hosting Azure Functions (consumo, consumo flessibile, Premium), Servizio App e App Contenitore (con runtime di Functions) Qualsiasi piattaforma: Azure Container Apps, AKS, App Service, macchine virtuali, in sede
Ridimensionamento Automatico, gestito dall'infrastruttura di scalabilità gestita Azure Functions È possibile gestire manualmente il ridimensionamento o usare la scalabilità automatica nativa della piattaforma ( ad esempio KEDA in Kubernetes)
Trigger Supporto predefinito per i trigger HTTP, Queue, Timer, Event Grid e altri trigger di Funzioni di Azure Si definiscono punti di ingresso personalizzati (ad esempio, endpoint HTTP, consumer di messaggi e così via)
Archiviazione dello stato Durable Task Scheduler (scelta consigliata), Azure Storage, MSSQL, Netherite Pianificatore di attività persistente
Lingue .NET (C#/F#), JavaScript/TypeScript, Python, Java, PowerShell .NET (C#/F#), JavaScript/TypeScript, Python, Java
Monitoring Integrazione predefinita con il portale di Azure, Application Insights Si configura una soluzione di monitoraggio personalizzata( ad esempio, Azure Monitor, Prometheus o Grafana)

Annotazioni

L'avvio a freddo si verifica quando un'app per le funzioni viene avviata dopo l'inattività. I piani di hosting Premium e Dedicato mantengono a caldo le istanze per ridurre la latenza di avvio a freddo.

Il piano di hosting Flex Consumption offre il concetto di 'istanze sempre pronte' come mitigazione dell'avvio a freddo.

Ulteriori informazioni sui modelli di hosting di Azure Functions.

API HTTP integrate

Azure Functions fornisce endpoint HTTP per l'applicazione per funzioni, che l'estensione Durable Functions sfrutta per fornire il supporto incorporato per la gestione delle istanze su HTTP.

Quando si usano gli SDK di Durable Task, è necessario implementare endpoint HTTP personalizzati a seconda delle risorse di calcolo dell'hosting.

Feature Funzioni durevoli SDK per attività durevoli
API HTTP di gestione ✅ Integrato ❌ Implementare il proprio
URL di stato automatici ✅ Integrato ❌ Implementare il proprio

Funzionalità HTTP di Durable Functions

Durable Functions espone automaticamente gli endpoint HTTP per avviare orchestrazioni, eseguire query sullo stato, generare eventi e istanze di terminazione. Queste API seguono il modello di polling HTTP asincrono, semplificando l'integrazione con sistemi esterni.

Annotazioni

Durable Functions supporta l'uso diretto della classe DurableTaskClient se si preferisce usare le API HTTP predefinite.

Altre informazioni: funzionalità HTTP in Durable Functions | riferimento API HTTP

Gestione degli SDK per attività durevoli

Con gli SDK di Durable Task è possibile usare la DurableTaskClient classe direttamente per gestire le istanze di orchestrazione. Se sono necessari endpoint HTTP, è necessario implementarli manualmente usando il framework Web preferito.

Altre informazioni: Gestire le istanze di orchestrazione

Back-end di archiviazione

Durable Functions supportano più back-end di archiviazione, mentre gli SDK Durable Task utilizzano esclusivamente il Durable Task Scheduler.

Suggerimento

Il Durable Task Scheduler è un servizio di Azure completamente gestito che gestisce la persistenza dello stato di orchestrazione. Viene effettuato il provisioning come risorsa di Azure separata con il proprio pricing. È il back-end consigliato per Durable Functions e l'unico back-end supportato per gli SDK per le attività permanenti.

Provider di archiviazione Funzioni durevoli SDK per attività durevoli
Pianificatore di attività persistente ✅ Consigliato ✅ Obbligatorio
Azure Storage ✅ Sostenuto ❌ Non supportato
Microsoft SQL Server ✅ Sostenuto ❌ Non supportato
Netherite ⚠️ Supportato, ma in fase di ritiro ❌ Non supportato

Altre informazioni: Provider di archiviazione

Configurazione dell'hub attività

Durable Functions configura gli hub delle attività nel file host.json. Gli SDK per attività permanenti configurano gli hub delle attività nel codice e nelle variabili di ambiente (connection string/endpoint).

Altre informazioni: Hub delle attività

Diagnostica e controllo delle versioni

Feature Funzioni durevoli SDK per attività durevoli
Dashboard utilità di pianificazione attività permanenti ✅ Sì ✅ Sì
Application Insights ✅ Integrato Configurazione manuale
Distribuzione senza tempi di inattività ✅ Slot di funzioni Specifico per piattaforma

Altre informazioni: Diagnostica | Versionamento

Entrambi i modelli di hosting supportano il Durable Task Scheduler come sistema di archiviazione dello stato, che offre funzionalità di archiviazione dello stato e di monitoraggio aggiuntive. Durable Functions supporta anche diverse opzioni di archiviazione BYO (Bring Your Own) per scenari che li richiedono. Per altre informazioni, vedere Provider di archiviazione.

Altre considerazioni

Quando si sceglie tra i due modelli di hosting, considerare i fattori seguenti:

Scegliere Durable Functions se... Scegliere SDK per attività permanenti autonome se...
Si desidera avere trigger integrati di Azure Functions (HTTP, Coda, Timer e così via). Si vuole avere il controllo completo sul contenitore e sui relativi punti di ingresso.
Si ha già familiarità con il modello di hosting Azure Functions. Si preferisce un SDK leggero senza sovraccarico di runtime Azure Functions.
Hai bisogno dell'integrazione del portale di Azure per la gestione delle funzioni. Si vuole che lo stesso codice sia portabile tra piattaforme container (AKS, Servizio App, e così via).
È necessario scegliere tra più sistemi di archiviazione. Hai del codice di applicazione esistente, non basato su Funzioni, con cui integrare.
Sono necessarie app serverless basate su eventi che si riducono fino a zero quando inattive. Sono necessari carichi di lavoro a bassa latenza sempre attiva senza ritardi di avvio a freddo.
Si vogliono prezzi con pagamento in base all'esecuzione con il piano a consumo. Sono necessari scenari con velocità effettiva elevata ottimizzati per l'elaborazione batch.
È necessario creare rapidamente prototipi con trigger dichiarativi e associazioni. Hai applicazioni esistenti containerizzate o Kubernetes.

Migrazione

Se si usa già Durable Functions e si vuole passare a una distribuzione basata su contenitori o sfruttare la flessibilità di hosting degli SDK per attività permanenti, la migrazione è semplice. Il codice di orchestrazione è molto simile tra entrambi i framework.

Per indicazioni dettagliate sulla migrazione, vedere Migrate da Durable Functions a Durable Task SDK.

SDK di attività permanenti non supportati

Tutti gli SDK per attività durevoli sono open source e disponibili in GitHub. Tuttavia, alcuni SDK non sono ufficialmente supportati da Microsoft o sono ancora in fasi sperimentali. Gli SDK seguenti non sono attualmente supportati:

Durable Task Framework (Legacy)

Durable Task Framework (DTFx) è una vecchia libreria di attività .NET open source. Sebbene fornisca primitive di orchestrazione simili, precede gli SDK di Durable Task moderni e non include il supporto ufficiale Microsoft o le funzionalità più recenti. È anche necessario gestire l'hosting, l'infrastruttura operativa e la manutenzione a lungo termine.

Se si sta avviando un nuovo progetto, è consigliabile usare invece gli SDK di Durable Task moderni o Durable Functions.

SDK per attività durevoli di Go

Durable Task SDK per Go è una libreria open source supportata dalla community che consente funzionalità di orchestrazione durevoli nelle applicazioni Go. Attualmente è in fase sperimentale, non funziona con nessuno dei back-end di archiviazione dello stato di Durable Task supportati e non è consigliato per l'uso in produzione.

Annotazioni

Se si è interessati a usare Durable Task con Go con supporto formale di Microsoft, è consigliabile inviare commenti e suggerimenti aprendo un problema nel repository durabletask-go GitHub.

Passaggi successivi

Introduzione al framework scelto:

Panoramica di Durable Functions

Panoramica di Durable Functions

Successivamente, scopri di più sul provider back-end di Durable Task Scheduler.