Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met de geïsoleerde .NET-werkrol kunt u Durable Functions uitvoeren op elke ondersteunde .NET-versie, onafhankelijk van het Azure Functions-hostproces. Dit model biedt u volledige controle over afhankelijkheidsinjectie, middleware en .NET-versiebeheer.
In dit artikel krijgt u meer informatie over:
- Voordelen van de geïsoleerde werker voor Durable Functions
- Aan de slag met de vereiste pakketten
- Belangrijke verschillen van in-process API's en naamruimten
- Source generators en op klassen gebaseerde syntaxis (preview) voor sterk getypte orkestraties
Benefits
De geïsoleerde .NET-werkrol biedt verschillende voordelen voor Durable Functions-apps:
- Onafhankelijke .NET-versiebeheer: Voer uw app uit op .NET 8, .NET 9 of hoger zonder te wachten tot de Functions-host is bijgewerkt.
-
Volledige afhankelijkheidsinjectie: Gebruik standaard .NET-patronen
IServiceCollection/IServiceProviderin uw activiteiten. - Aangepaste middleware: Voeg algemene aspecten toe, zoals logboekregistratie, verificatie of foutafhandeling via de middleware-pijplijn van de Functions-werkrol.
-
Directe invoerinjectie: Orchestration-invoer kan direct worden geïnjecteerd in de handtekening van de triggermethode:
MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input). - Sterk getypte aanroepen (preview): Met het brongeneratorpakket krijgt u compileertijd-veilige aanroepen voor activiteiten en subindelingen. Zie Brongeneratoren en op klassen gebaseerde syntaxis (preview) voor meer informatie.
Zie Voordelen van het geïsoleerde werknemersmodel voor de volledige lijst met voordelen van geïsoleerde werknemers.
Get started
Een Durable Functions-app maken met behulp van de geïsoleerde .NET-werkrol:
Installeer het vereiste NuGet-pakket:
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.DurableTask" Version="1.*" />Gebruiken
TaskOrchestrationContextvoor orchestrators enDurableTaskClientvoor clientbewerkingen. Zie de quickstart-zelfstudie voor een volledig overzicht.
Belangrijke verschillen van in-process
Als u migreert van of vergelijkt met het in-process model, zijn dit de belangrijkste verschillen:
| Oppervlak | In behandeling | .NET geïsoleerde werkrol |
|---|---|---|
| NuGet-pakket | Microsoft.Azure.WebJobs.Extensions.DurableTask |
Microsoft.Azure.Functions.Worker.Extensions.DurableTask |
| Orchestrator-context | IDurableOrchestrationContext |
TaskOrchestrationContext |
| Clienttype | IDurableOrchestrationClient |
DurableTaskClient |
| Activiteitscontext | IDurableActivityContext |
TaskActivityContext |
| Namespace | Microsoft.Azure.WebJobs.Extensions.DurableTask |
Microsoft.DurableTask / Microsoft.Azure.Functions.Worker |
| Opnieuw afspelen-veilige logboekregistratie | context.CreateReplaySafeLogger(log) |
context.CreateReplaySafeLogger("Name") |
Zie Migreren van proces naar geïsoleerd werkmodel voor een uitgebreide migratiehandleiding voor projectinstallatie, pakketverwijzingen, API-toewijzingen, gedragsverschillen en veelvoorkomende problemen.
Brongeneratoren en op klassen gebaseerde syntaxis (preview)
Het brongeneratorpakket biedt een alternatief voor op functies gebaseerde Durable Functions. In plaats van statische methoden met [Function] kenmerken schrijft u sterk getypte klassen die overnemen van de Durable SDK.
Prerequisites
Voeg het NuGet-pakket van de brongenerator toe aan uw project:
<PackageReference Include="Microsoft.DurableTask.Generators" Version="1.0.0" />
Het pakket biedt twee mogelijkheden:
-
Op klassen gebaseerde activiteiten en orkestraties — sterk getypte klassen die
TaskOrchestrator<TInput, TOutput>enTaskActivity<TInput, TOutput>erven. - Sterk getypte uitbreidingsmethoden — compileertijd-veilige methoden voor het aanroepen van sub-orkestraties en activiteiten. Deze uitbreidingsmethoden werken ook vanuit op functies gebaseerde orkestraties.
Example
In het volgende voorbeeld ziet u een klasse-gebaseerde orchestratie die een klasse-gebaseerde activiteit aanroept.
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
Gebruik voor orkestraties of activiteiten die geen functionele invoer of uitvoer nodig hebben object? als het algemene typeargument (bijvoorbeeld TaskOrchestrator<object?, object?>). Met dit patroon kunt u afhankelijkheidsinjectie (bijvoorbeeld ILogger<T>) gebruiken in activiteiten terwijl u nog steeds het model op basis van klassen gebruikt.
Duurzame entiteiten
Duurzame entiteiten worden ondersteund in de .NET geïsoleerde worker. Zie de handleiding voor ontwikkelaars voor meer informatie.