0Pricing
C# Academy · Lezione

Policy di timeout e fallback

Limiti i tempi di attesa e fornisca fallback appropriati.

Policy di timeout e fallback è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 4 lezioni in totale.

Perché i timeout sono importanti

Una chiamata che non restituisce mai una risposta è peggiore di una che fallisce: occupa thread e connessioni. Una strategia di timeout limita il tempo di esecuzione di un'operazione prima che Polly la annulli.

Aggiungere un timeout

Polly v8 fornisce AddTimeout. Quando il limite viene superato, genera una TimeoutRejectedException e annulla il token sottostante.

using Polly.Timeout;

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

Annullamento cooperativo

Il timeout funziona annullando il CancellationToken passato al callback. Perché il timeout abbia effetto tempestivamente, il Suo codice deve rispettare quel token.

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

Reagire ai timeout

Usi TimeoutStrategyOptions con un callback OnTimeout per registrare informazioni o generare metriche quando un'operazione viene interrotta.

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

Cos'è un fallback?

Un fallback fornisce un risultato sostitutivo quando un'operazione fallisce, così l'utente riceve un'esperienza degradata ma gestita invece di un errore: dati memorizzati nella cache, un valore predefinito o un messaggio intuitivo.

Aggiungere una strategia di fallback

AddFallback richiede una pipeline tipizzata. Si definiscono gli errori da gestire e il valore da restituire al loro posto.

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();

Restituire dati memorizzati nella cache come fallback

Un pattern comune consiste nel fornire dalla cache l'ultimo valore noto come valido quando la chiamata in tempo reale fallisce, mantenendo l'app reattiva.

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

Osservare i fallback

Il callback OnFallback viene eseguito quando entra in funzione il fallback: è ideale per registrare che è stato seguito un percorso degradato.

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

Usare insieme timeout e fallback

La combinazione è potente: un timeout limita l'attesa e un fallback fornisce un valore quando si verifica il timeout, o qualsiasi altro errore gestito, così le chiamate non restano mai bloccate né terminano in errore.

Scegliere timeout sensati

Imposti i timeout sulla base di una latenza realistica più un margine, non usando valori arbitrariamente piccoli. Se il limite è troppo stretto, falliscono chiamate sane; se è troppo ampio, si perde lo scopo del timeout.

Il fallback come ultima risorsa

Posizioni il fallback come strategia più esterna, così può intercettare allo stesso modo gli errori prodotti da retry, breaker e timeout, garantendo sempre al chiamante un risultato utilizzabile.

Controllo rapido

Verifichi le strategie di timeout e fallback.

Riepilogo

I timeout limitano la durata delle operazioni con AddTimeout, annullando il token e generando una TimeoutRejectedException: rispetti il token! I fallback forniscono risultati sostitutivi tramite AddFallback con una FallbackAction, spesso servendo dati memorizzati nella cache. Insieme mantengono le applicazioni reattive: limitano l'attesa e consentono poi un degrado gestito. Posizioni il fallback all'esterno, così intercetta tutti gli errori gestiti.

Domande Frequenti

La lezione «Policy di timeout e fallback» è gratuita?

Sì — il testo completo di «Policy di timeout e fallback» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 4 lezioni in totale.

Cosa imparerò in «Policy di timeout e fallback»?

Limiti i tempi di attesa e fornisca fallback appropriati. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C# Academy?

Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Policy di timeout e fallback»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C# Academy?

Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Policy di retry
  2. Pattern Circuit Breaker
  3. Policy di timeout e fallback
  4. Pipeline di resilienza
← Torna a C# Academy