0Pricing
C# Academy · Leçon

Politiques de délai d’expiration et de solution de repli

Limitez les attentes et fournissez des solutions de repli élégantes.

Politiques de délai d’expiration et de solution de repli est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 4 leçons au total.

Pourquoi les délais d’expiration sont importants

Un appel qui ne renvoie jamais de résultat est pire qu’un appel qui échoue : il monopolise les threads et les connexions. Une stratégie de délai d’expiration limite la durée pendant laquelle une opération peut s’exécuter avant que Polly ne l’annule.

Ajouter un délai d’expiration

Polly v8 fournit AddTimeout. Lorsque la limite est dépassée, il lève une TimeoutRejectedException et annule le jeton sous-jacent.

using Polly.Timeout;

var pipeline = new ResiliencePipelineBuilder()
    .AddTimeout(TimeSpan.FromSeconds(3))
    .Build();

Annulation coopérative

Le délai d’expiration fonctionne en annulant le CancellationToken transmis à votre fonction de rappel. Votre code doit respecter ce jeton pour que le délai d’expiration prenne effet rapidement.

await pipeline.ExecuteAsync(async token =>
{
    // token is cancelled when the timeout fires
    await httpClient.GetAsync(url, token);
});

Réagir aux délais d’expiration

Utilisez TimeoutStrategyOptions avec une fonction de rappel OnTimeout pour journaliser l’interruption d’une opération ou émettre des métriques lorsqu’elle est interrompue.

new TimeoutStrategyOptions
{
    Timeout = TimeSpan.FromSeconds(3),
    OnTimeout = args =>
    {
        Console.WriteLine($"Timed out after {args.Timeout}");
        return default;
    }
};

Qu’est-ce qu’une solution de repli ?

Une solution de repli fournit un résultat de remplacement lorsqu’une opération échoue. L’utilisateur bénéficie ainsi d’une expérience dégradée mais correcte au lieu de voir une erreur : des données mises en cache, une valeur par défaut ou un message convivial.

Ajouter une stratégie de repli

AddFallback nécessite une chaîne typée. Vous définissez les défaillances à prendre en charge et la valeur à renvoyer à la place.

using Polly.Fallback;

var pipeline = new ResiliencePipelineBuilder<string>()
    .AddFallback(new FallbackStrategyOptions<string>
    {
        ShouldHandle = new PredicateBuilder<string>()
            .Handle<HttpRequestException>(),
        FallbackAction = args =>
            Outcome.FromResultAsValueTask("cached default")
    })
    .Build();

Renvoyer des données mises en cache comme solution de repli

Un schéma courant consiste à fournir la dernière valeur connue comme correcte depuis le cache lorsque l’appel en temps réel échoue, afin de maintenir la réactivité de l’application.

FallbackAction = args =>
{
    var cached = _cache.GetLastKnownGood();
    return Outcome.FromResultAsValueTask(cached);
}

Observer les solutions de repli

La fonction de rappel OnFallback est appelée lorsque la solution de repli s’exécute, ce qui est idéal pour journaliser l’utilisation d’un parcours dégradé.

new FallbackStrategyOptions<string>
{
    FallbackAction = args => Outcome.FromResultAsValueTask("default"),
    OnFallback = args =>
    {
        Console.WriteLine("Fallback executed");
        return default;
    }
};

Associer délai d’expiration et solution de repli

Les combiner est puissant : un délai d’expiration limite l’attente et une solution de repli fournit une valeur lorsque le délai d’expiration, ou toute autre défaillance prise en charge, survient. Les appelants ne restent ainsi jamais bloqués et l’application n’échoue pas brutalement.

Choisir des délais d’expiration raisonnables

Définissez les délais d’expiration à partir d’une latence réaliste à laquelle vous ajoutez une marge, et non à partir de valeurs arbitrairement faibles. S’ils sont trop courts, des appels sains échouent ; s’ils sont trop longs, vous perdez l’intérêt de la stratégie.

La solution de repli en dernier recours

Placez la solution de repli au niveau le plus externe afin qu’elle puisse intercepter les défaillances provenant aussi bien des nouvelles tentatives que des disjoncteurs et des délais d’expiration, garantissant ainsi que l’appelant reçoit toujours un résultat exploitable.

Vérification rapide

Vérifiez les stratégies de délai d’expiration et de solution de repli.

Récapitulatif

Les délais d’expiration limitent la durée des opérations avec AddTimeout, annulent le jeton et lèvent une TimeoutRejectedException ; respectez bien le jeton ! Les solutions de repli fournissent des résultats de remplacement via AddFallback avec un FallbackAction, en fournissant souvent des données mises en cache. Ensemble, elles maintiennent la réactivité des applications : elles limitent l’attente, puis assurent une dégradation progressive. Placez la solution de repli au niveau le plus externe afin qu’elle intercepte toutes les défaillances prises en charge.

Questions Fréquemment Posées

La leçon « Politiques de délai d’expiration et de solution de repli » est-elle gratuite ?

Oui — le texte complet de « Politiques de délai d’expiration et de solution de repli » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Politiques de délai d’expiration et de solution de repli » ?

Limitez les attentes et fournissez des solutions de repli élégantes. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C# Academy ?

Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Politiques de délai d’expiration et de solution de repli » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?

Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Politiques de nouvelle tentative
  2. Modèle du coupe-circuit
  3. Politiques de délai d’expiration et de solution de repli
  4. Pipelines de résilience
← Retour à C# Academy