Vue d'ensemble des Fonctions Durables dans le worker isolé .NET

Le worker isolé .NET vous permet d’exécuter Durable Functions sur n’importe quelle version .NET prise en charge indépendamment du processus hôte Azure Functions. Ce modèle vous donne un contrôle total sur l’injection de dépendances, l’intergiciel et le contrôle de version .NET.

Dans cet article, vous découvrirez :

Avantages

Le worker isolé .NET offre plusieurs avantages pour les applications Durable Functions :

  • Contrôle de version indépendant de .NET : Exécutez votre application sur .NET 8, .NET 9 ou version ultérieure sans attendre que l’hôte Functions soit mis à jour.
  • Injection complète de dépendances : Utilisez des modèles .NET IServiceCollection / IServiceProvider standard dans vos activités.
  • Intergiciel personnalisé : Ajoutez des préoccupations croisées telles que la journalisation, l’authentification ou la gestion des erreurs via le pipeline d’intergiciels de travail Functions.
  • Injection directe d’entrée : L’entrée d’orchestration peut être injectée directement dans la signature de la méthode de déclencheur : MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input).
  • Appels fortement typés (préversion) : Avec le package de générateur source, vous obtenez des appels sécurisés au moment de la compilation pour les activités et les sous-orchestrations. Pour plus d’informations, consultez Les générateurs sources et la syntaxe basée sur des classes (préversion).

Pour obtenir la liste complète des avantages des travailleurs isolés, consultez Avantages du modèle de travail isolé.

Get started

Pour créer une application Durable Functions à l’aide du worker isolé .NET :

  1. Installez le package NuGet requis :

    <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.DurableTask" Version="1.*" />
    
  2. Utiliser TaskOrchestrationContext pour les orchestrateurs et DurableTaskClient pour les opérations clientes. Consultez le didacticiel de démarrage rapide pour obtenir une procédure pas à pas complète.

Principales différences par rapport au processus

Si vous effectuez une migration depuis ou une comparaison avec le modèle en cours d'exécution, voici les principales différences :

Domaine En cours Worker isolé .NET
Package NuGet Microsoft.Azure.WebJobs.Extensions.DurableTask Microsoft.Azure.Functions.Worker.Extensions.DurableTask
Contexte d’orchestration IDurableOrchestrationContext TaskOrchestrationContext
Type de client IDurableOrchestrationClient DurableTaskClient
Contexte d’activité IDurableActivityContext TaskActivityContext
Namespace Microsoft.Azure.WebJobs.Extensions.DurableTask Microsoft.DurableTask / Microsoft.Azure.Functions.Worker
Enregistreur fiable sans répétition context.CreateReplaySafeLogger(log) context.CreateReplaySafeLogger("Name")

Pour obtenir un guide de migration complet qui couvre l’installation du projet, les références de package, les mappages d’API, les différences comportementales et les problèmes courants, consultez Migrer du modèle worker in-process vers un modèle worker isolé.

Générateurs de sources et syntaxe basée sur des classes (aperçu)

Le package de générateur source offre une alternative aux fonctions durables basées sur des fonctions. Au lieu de méthodes statiques avec [Function] des attributs, vous écrivez des classes fortement typées qui héritent du SDK Durable.

Prerequisites

Ajoutez le package NuGet du générateur source à votre projet :

<PackageReference Include="Microsoft.DurableTask.Generators" Version="1.0.0" />

Le package offre deux fonctionnalités :

  • Activités et orchestrations basées sur des classes : classes fortement typées qui héritent de TaskOrchestrator<TInput, TOutput> et de TaskActivity<TInput, TOutput>.
  • Méthodes d’extension fortement typées : méthodes sécurisées au moment de la compilation pour appeler des sous-orchestrations et des activités. Ces méthodes d’extension fonctionnent également à partir d’orchestrations basées sur des fonctions.

Example

L’exemple suivant montre une orchestration de classe qui appelle une activité de classe :

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

Pour les orchestrations ou les activités qui n’ont pas besoin d’entrée ou de sortie fonctionnelles, utilisez object? comme argument de type générique (par exemple). TaskOrchestrator<object?, object?> Ce modèle vous permet d’utiliser l’injection de dépendances (par exemple) ILogger<T>dans les activités tout en utilisant le modèle basé sur la classe.

Entités durables

Les entités durables sont prises en charge dans le .NET worker isolé. Pour plus d’informations, consultez le guide du développeur.

Étapes suivantes