Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med den isolerade .NET-arbetaren kan du köra Durable Functions på valfri .NET-version som stöds oberoende av Azure Functions-värdprocessen. Den här modellen ger dig fullständig kontroll över beroendeinmatning, mellanprogram och .NET-versionshantering.
I den här artikeln lär du dig mer om:
- Fördelar med den isolerade arbetaren för Durable Functions
- Komma igång med de paket som krävs
- Viktiga skillnader från in-process API:er och deras namnområden
- Källgeneratorer och klassbaserad syntax (förhandsversion) för starkt skrivna orkestreringar
Benefits
Den isolerade .NET-arbetaren har flera fördelar för Durable Functions-appar:
- Oberoende .NET-versionshantering: Kör appen på .NET 8, .NET 9 eller senare utan att vänta på att Functions-värden ska uppdateras.
-
Fullständig beroendeinmatning: Använd standardmönster för .NET
IServiceCollection/IServiceProvideri dina aktiviteter. - Anpassat mellanprogram: Lägg till övergripande problem som loggning, autentisering eller felhantering via Functions Worker-pipelinen för mellanprogram.
-
Direktinmatning: Orkestreringsindata kan matas in direkt i utlösarmetodens signatur:
MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input). - Starkt skrivna anrop (förhandsversion): Med källgeneratorpaketet får du kompileringstidssäkra anrop för aktiviteter och underorkestreringar. Mer information finns i Källgeneratorer och klassbaserad syntax (förhandsversion).
Den fullständiga listan över isolerade arbetsförmåner finns i Fördelar med den isolerade arbetsmodellen.
Get started
Så här skapar du en Durable Functions-app med hjälp av den isolerade .NET-arbetaren:
Installera det nödvändiga NuGet-paketet:
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.DurableTask" Version="1.*" />Används
TaskOrchestrationContextför orkestrerare ochDurableTaskClientför klientåtgärder. En fullständig genomgång finns i snabbstartsguiden .
Viktiga skillnader från i-processen
Här är de viktigaste skillnaderna om du migrerar från eller jämför med den processbaserade modellen:
| Område | Pågående | .NET isolerad arbetare |
|---|---|---|
| NuGet-paket | Microsoft.Azure.WebJobs.Extensions.DurableTask |
Microsoft.Azure.Functions.Worker.Extensions.DurableTask |
| Orchestrator-kontext | IDurableOrchestrationContext |
TaskOrchestrationContext |
| Klienttyp | IDurableOrchestrationClient |
DurableTaskClient |
| Aktivitetskontext | IDurableActivityContext |
TaskActivityContext |
| Namespace | Microsoft.Azure.WebJobs.Extensions.DurableTask |
Microsoft.DurableTask / Microsoft.Azure.Functions.Worker |
| Replay-safe logger | context.CreateReplaySafeLogger(log) |
context.CreateReplaySafeLogger("Name") |
En omfattande migreringsguide som omfattar projektkonfiguration, paketreferenser, API-mappningar, beteendeskillnader och vanliga problem finns i Migrera från processbaserad till isolerad arbetsmodell.
Källgeneratorer och klassbaserad syntax (förhandsversion)
Källgeneratorpaketet är ett alternativ till funktionsbaserade Durable Functions. I stället för statiska metoder med [Function]-attribut skriver du starkt typade klasser som ärver från SDK:n Durable.
Förutsättningar
Lägg till NuGet-paketet för källgeneratorn i projektet:
<PackageReference Include="Microsoft.DurableTask.Generators" Version="1.0.0" />
Paketet innehåller två funktioner:
-
Klassbaserade aktiviteter och orkestreringar – starkt skrivna klasser som ärver
TaskOrchestrator<TInput, TOutput>ochTaskActivity<TInput, TOutput>. - Strikt typade tilläggsmetoder – kompileringstidssäkra metoder för att anropa underorkestreringar och aktiviteter. Dessa tilläggsmetoder fungerar också i funktionsbaserade orkestreringar.
Example
I följande exempel visas en klassbaserad orkestrering som anropar en klassbaserad aktivitet:
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
För orkestreringar eller aktiviteter som inte behöver funktionella indata eller utdata använder object? du som allmänt typargument (till exempel TaskOrchestrator<object?, object?>). Med det här mönstret kan du använda beroendeinmatning (till exempel ILogger<T>) i aktiviteter medan du fortfarande använder den klassbaserade modellen.
Varaktiga entiteter
Varaktiga entiteter stöds i den isolerade .NET-arbetaren. Mer information finns i utvecklarguiden.