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.
Il worker isolato .NET consente di eseguire le Funzioni Durabili in qualsiasi versione supportata di .NET indipendentemente dal processo host delle Azure Functions. Questo modello offre il controllo completo sull'inserimento delle dipendenze, sul middleware e sul controllo delle versioni di .NET.
In questo articolo vengono fornite informazioni su:
- Vantaggi del lavoratore isolato per Durable Functions
- Iniziare con i pacchetti richiesti
- Differenze principali tra le API in-process e gli spazi dei nomi
- Generatori di codice sorgente e sintassi basata su classi (anteprima) per orchestrazioni fortemente tipizzate
Vantaggi
Il worker isolato di .NET offre diversi vantaggi per le app Durable Functions:
- Controllo delle versioni indipendenti di .NET: Eseguire l'app in .NET 8, .NET 9 o versione successiva senza attendere l'aggiornamento dell'host di Funzioni.
-
Inserimento completo delle dipendenze: Usare modelli .NET
IServiceCollection/IServiceProviderstandard nelle attività. - Middleware personalizzato: Aggiungere problemi trasversali, ad esempio la registrazione, l'autenticazione o la gestione degli errori tramite la pipeline del middleware del ruolo di lavoro di Funzioni.
-
Inserimento diretto dell'input: L'input di orchestrazione può essere inserito direttamente nella firma del metodo trigger:
MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input). - Chiamate strettamente tipizzate (anteprima): Con il pacchetto del generatore di origine, si ottengono invocazioni sicure in fase di compilazione per attività e sotto-orchestrazioni. Per altre informazioni, vedere Generatori di origine e sintassi basata su classi (anteprima).
Per l'elenco completo dei vantaggi dei lavoratori isolati, vedere Vantaggi del modello di lavoro isolato.
Inizia
Per creare un'applicazione di Durable Functions usando il lavoratore isolato .NET:
Installare il pacchetto NuGet necessario:
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.DurableTask" Version="1.*" />Usare
TaskOrchestrationContextper agenti di orchestrazione eDurableTaskClientper le operazioni client. Per una procedura dettagliata completa, vedere l'esercitazione introduttiva .
Differenze principali rispetto al processo in corso
Se si migra da o si confronta con il modello in-process, ecco le differenze principali:
| Area | In corso | Lavoro isolato .NET |
|---|---|---|
| Pacchetto NuGet | Microsoft.Azure.WebJobs.Extensions.DurableTask |
Microsoft.Azure.Functions.Worker.Extensions.DurableTask |
| Contesto dell'orchestratore | IDurableOrchestrationContext |
TaskOrchestrationContext |
| Tipo client | IDurableOrchestrationClient |
DurableTaskClient |
| Contesto dell'attività | IDurableActivityContext |
TaskActivityContext |
| spazio dei nomi | Microsoft.Azure.WebJobs.Extensions.DurableTask |
Microsoft.DurableTask / Microsoft.Azure.Functions.Worker |
| Logger sicuro per la riproduzione | context.CreateReplaySafeLogger(log) |
context.CreateReplaySafeLogger("Name") |
Per una guida completa alla migrazione che illustra la configurazione del progetto, i riferimenti ai pacchetti, i mapping delle API, le differenze comportamentali e i problemi comuni, vedere Eseguire la migrazione da un modello di lavoro in-process a un modello di lavoro isolato.
Generatori di origine e sintassi basata su classi (anteprima)
Il pacchetto del generatore di origine offre un'alternativa a Durable Functions basata su funzioni. Invece di metodi statici con attributi [Function], si scrivono classi fortemente tipizzate che ereditano dal Durable SDK.
Prerequisiti
Aggiungere il pacchetto NuGet del generatore di origine al progetto:
<PackageReference Include="Microsoft.DurableTask.Generators" Version="1.0.0" />
Il pacchetto offre due funzionalità:
-
Attività e orchestrazioni basate sulle classi — Classi a rigorosa tipizzazione che ereditano
TaskOrchestrator<TInput, TOutput>eTaskActivity<TInput, TOutput>. - Metodi di estensione fortemente tipizzati : metodi sicuri a tempo di compilazione per richiamare sotto-orchestrazioni e attività. Questi metodi di estensione funzionano anche nelle orchestrazioni basate su funzioni.
Esempio
L'esempio seguente illustra un'orchestrazione basata su classi che chiama un'attività basata su classi:
using Microsoft.DurableTask;
[DurableTask]
public class MyOrchestration : TaskOrchestrator<string, string>
{
public override async Task<string> RunAsync(TaskOrchestrationContext context, string input)
{
return await context.CallActivityAsync<string>(nameof(MyActivity), input);
}
}
[DurableTask]
public class MyActivity : TaskActivity<string, string>
{
public override Task<string> RunAsync(TaskActivityContext context, string input)
{
return Task.FromResult($"Processed: {input}");
}
}
Tip
Per le orchestrazioni o le attività che non richiedono input o output funzionale, usare object? come argomento di tipo generico (ad esempio, TaskOrchestrator<object?, object?>). Questo modello consente di usare l'inserimento delle dipendenze (ad esempio, ILogger<T>) nelle attività mentre si usa ancora il modello basato sulla classe.
Entità durevoli
Le entità durevoli sono supportate nel worker isolato di .NET. Per altre informazioni, vedere la guida per gli sviluppatori.