Differenze tra il modello di lavoro isolato e il modello In-Process per .NET in Funzioni di Azure

Esistono due modelli di esecuzione per le funzioni .NET:

Modello di esecuzione Descrizione
Modello di lavoro isolato Il codice della funzione viene eseguito in un processo di lavoro .NET separato. Usare con le versioni supportate di .NET e .NET Framework. Per altre informazioni, vedere Sviluppare funzioni di processo di lavoro isolato .NET.
Modello di processo Il codice della funzione viene eseguito nello stesso processo del processo host di Funzioni. Supporta solo versioni LTS (Long Term Support) di .NET. Per altre informazioni, vedere Sviluppare funzioni della libreria di classi .NET.

Questo articolo descrive lo stato corrente delle differenze funzionali e i comportamentali tra i due modelli. Per eseguire la migrazione dal modello In-Process al modello di lavoro isolato, vedere Eseguire la migrazione di app .NET dal modello In-Process al modello di lavoro isolato.

Tabella di confronto del modello di esecuzione

Usare la tabella seguente per confrontare le differenze funzionali e di funzionalità tra i due modelli:

Funzionalità/comportamento Modello di lavoro isolato Modello In-Process3
Versioni di .NET supportate Versioni con supporto a lungo termine (LTS),
Versioni del supporto per termini standard (STS),
.NET Framework
Versioni con supporto a lungo termine (LTS), che terminano con .NET 8
Pacchetti core Microsoft.Azure.Functions.Worker
Microsoft.Azure.Functions.Worker.Sdk
Microsoft.NET.Sdk.Functions
Binding dei pacchetti di estensione Microsoft.Azure.Functions.Worker.Extensions.* Microsoft.Azure.WebJobs.Extensions.*
Funzioni durevoli Supportata Supportata
Tipi di modello esposti da associazioni Tipi semplici
Tipi serializzabili JSON
Matrici/enumerazioni
Tipi Service SDK4
Tipi semplici
Tipi serializzabili JSON
Matrici/enumerazioni
Tipi Service SDK4
Tipi di modello di trigger HTTP HttpRequestData / HttpResponseData
HttpRequest / IActionResult (usando Integrazione dei componente di base ASP.NET)5
HttpRequest / IActionResult5
HttpRequestMessage / HttpResponseMessage
Interazioni di associazione di output Restituire valori in un modello espanso con:
- singolo o più output
- matrici di output
Valori restituiti (solo output singolo),
out parametri,
IAsyncCollector
Associazioni imperative1 Non supportato: lavorare invece direttamente con i tipi SDK Supportata
Inserimento delle dipendenze Supportate (modello migliorato coerente con l'ecosistema .NET) Supportata
Middleware Supportata Non supportato
Registrazione ILogger<T>/ILogger ottenuto da FunctionContext o tramite inserimento delle dipendenze ILogger è passato alla funzione
ILogger<T> tramite inserimento delle dipendenze
Dipendenze di Application Insights Supportata Supportata
Token di annullamento Supportata Supportata
Orari di inizio a freddo2 Ottimizzazioni configurabili Ottimizzazione
ReadyToRun Supportata Supportata
[Consumo Flex] Supportata Non supportato

1 Quando è necessario interagire con un servizio usando parametri determinati in fase di esecuzione, è consigliabile usare direttamente gli SDK corrispondenti del servizio tramite associazioni imperative. Gli SDK sono meno prolissi, coprono un maggior numero di scenari e offrono vantaggi per la gestione degli errori e il debug. Questo suggerimento si applica a entrambi i modelli.

2 I tempi di avvio a freddo potrebbero essere ulteriormente influenzati su Windows quando si usano alcune versioni di anteprima di .NET a causa del caricamento just-in-time dei framework di anteprima. Questo impatto si applica sia ai modelli In-Process che Out-of-Process, ma possono essere evidenti durante il confronto tra versioni diverse. Questo ritardo per le versioni di anteprima non è presente nei piani Linux.

3 Funzioni script C# vengono eseguite anche In-Process e usano le stesse librerie delle funzioni della libreria di classi In-Process. Per altre informazioni, vedere le informazioni di riferimento per gli sviluppatori di script C# di Funzioni di Azure (con estensione csx).

4 I tipi di Service SDK includono tipi di Azure SDK per .NET, ad esempio BlobClient.

5 I tipi di ASP.NET Core non sono supportati per .NET Framework.

Versioni supportate

Le versioni del runtime di Funzioni supportano versioni specifiche di .NET. Per altre informazioni sulle versioni di Funzioni, vedere Panoramica delle versioni del runtime per Funzioni di Azure. Il supporto della versione dipende anche dal fatto che le funzioni eseguono il processo di lavoro In-Process o isolato.

Nota

Per informazioni su come modificare la versione del runtime di Funzioni usata dall'app per le funzioni, vedere visualizzare e aggiornare la versione di runtime corrente.

La tabella seguente illustra il livello più elevato di .NET o .NET Framework che può essere usato con una versione specifica di Funzioni.

Versione del runtime di Funzioni Modello di lavoro isolato Modello In-Process5
Funzioni 4.x1 .NET 9.0 (anteprima)
.NET 8.0
.NET 6.02
.NET Framework 4.83
.NET 8.0
.NET 6.02
Funzioni 1.x4 n/d .NET Framework 4.8

1.NET 7 è stato precedentemente supportato nel modello di lavoro isolato, ma ha raggiunto la fine del supporto ufficiale il 14 maggio 2024.

2 .NET 6 raggiunge la fine del supporto ufficiale il 12 novembre 2024.

3 Il processo di compilazione richiede anche .NET SDK.

4 Il supporto termina per la versione 1.x del runtime di Funzioni di Azure il 14 settembre 2026. Per altre informazioni, vedere questo annuncio relativo al supporto. Per la prosecuzione del supporto completo, eseguire la migrazione delle app alla versione 4.x.

5 Il supporto per il modello In-Process terminerà il 10 novembre 2026. Per altre informazioni, vedere questo annuncio relativo al supporto. Per la prosecuzione del supporto completo, eseguire la migrazione delle app al modello di lavoro isolato.

Per le ultime notizie sulle versioni di Funzioni di Azure, inclusa la rimozione di versioni secondarie meno recenti specifiche, monitorare gli annunci del servizio app di Azure.

Passaggi successivi