Pipelines de résilience
Combinez plusieurs stratégies dans des pipelines de résilience.
Pipelines de résilience est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 4 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.
Composer des stratégies
Une véritable résilience nécessite généralement plusieurs stratégies fonctionnant ensemble. Polly v8 vous permet de les composer en une seule chaîne de résilience à l’aide de ResiliencePipelineBuilder.
Le ResiliencePipelineBuilder
Vous enchaînez les appels Add... et terminez par Build(). Le résultat est une ResiliencePipeline réutilisable et sûre pour les threads, à travers laquelle vous exécutez les appels.
var pipeline = new ResiliencePipelineBuilder()
.AddRetry(new RetryStrategyOptions())
.AddTimeout(TimeSpan.FromSeconds(5))
.Build();L’ordre est important
Les stratégies s’exécutent de l’extérieur vers l’intérieur : la première ajoutée englobe les autres. Un ordre courant et correct consiste à placer le délai d’expiration par tentative à l’intérieur des nouvelles tentatives, avec un délai d’expiration global et un disjoncteur autour de l’ensemble.
var pipeline = new ResiliencePipelineBuilder()
.AddTimeout(TimeSpan.FromSeconds(10)) // overall
.AddRetry(new RetryStrategyOptions())
.AddCircuitBreaker(new CircuitBreakerStrategyOptions())
.AddTimeout(TimeSpan.FromSeconds(2)) // per attempt
.Build();Chaînes typées
Lorsque les stratégies inspectent le résultat, comme une solution de repli ou une nouvelle tentative fondée sur le résultat, utilisez le ResiliencePipelineBuilder<T> générique afin que la chaîne connaisse le type de retour.
var pipeline = new ResiliencePipelineBuilder<HttpResponseMessage>()
.AddRetry(new HttpRetryStrategyOptions())
.Build();Exécuter avec un état
Pour éviter les allocations liées aux fermetures, transmettez l’état à ExecuteAsync ; Polly le transmet à son tour à votre fonction de rappel.
await pipeline.ExecuteAsync(
static async (state, token) => await state.CallAsync(token),
myService);Le ResiliencePipelineProvider
Au lieu de construire les chaînes directement dans le code, enregistrez des chaînes nommées dans DI et récupérez-les via ResiliencePipelineProvider. Cela centralise la configuration.
builder.Services.AddResiliencePipeline("db", pipeline =>
{
pipeline.AddRetry(new RetryStrategyOptions())
.AddTimeout(TimeSpan.FromSeconds(3));
});Récupérer une chaîne nommée
Injectez ResiliencePipelineProvider<string> et récupérez votre chaîne à l’aide de sa clé, où que vous en ayez besoin.
public class OrderService
{
private readonly ResiliencePipeline _pipeline;
public OrderService(ResiliencePipelineProvider<string> provider)
{
_pipeline = provider.GetPipeline("db");
}
}Résilience pour HttpClient
L’extension AddResilienceHandler associe une chaîne à un HttpClient typé ou nommé et l’applique à chaque requête sortante.
builder.Services.AddHttpClient<CatalogClient>()
.AddResilienceHandler("catalog", b =>
{
b.AddRetry(new HttpRetryStrategyOptions());
b.AddCircuitBreaker(new HttpCircuitBreakerStrategyOptions());
});Le gestionnaire de résilience standard
Microsoft fournit un AddStandardResilienceHandler clé en main qui regroupe, dans l’ordre recommandé, des stratégies raisonnables de nouvelle tentative, de disjoncteur, de délai d’expiration et de limitation du débit.
builder.Services.AddHttpClient<CatalogClient>()
.AddStandardResilienceHandler();Les chaînes sont réutilisables et peu coûteuses
Construisez une chaîne une seule fois et réutilisez-la pour de nombreuses exécutions. Elle est immuable et sûre pour les threads ; la partager est donc à la fois sûr et efficace.
Points d’extension pour l’observabilité
Chaque stratégie expose des fonctions de rappel, notamment OnRetry, OnOpened, OnTimeout et OnFallback, et Polly émet des données de télémétrie que vous pouvez relier à la journalisation et aux métriques pour obtenir une visibilité complète.
Vérification rapide
Vérifiez les chaînes de résilience.
Récapitulatif
Le ResiliencePipelineBuilder compose les nouvelles tentatives, le disjoncteur, le délai d’expiration et la solution de repli en une chaîne réutilisable ; l’ordre va de l’extérieur vers l’intérieur, il est donc important. Utilisez le générateur générique pour les stratégies tenant compte des résultats, enregistrez les chaînes nommées avec AddResiliencePipeline et récupérez-les via ResiliencePipelineProvider. Pour HTTP, AddResilienceHandler ou AddStandardResilienceHandler protège chaque requête.
Questions Fréquemment Posées
La leçon « Pipelines de résilience » est-elle gratuite ?
Oui — le texte complet de « Pipelines de résilience » 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 « Pipelines de résilience » ?
Combinez plusieurs stratégies dans des pipelines de résilience. 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 4 sur 4.
Combien de temps prend la leçon « Pipelines de résilience » ?
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
- Politiques de nouvelle tentative
- Modèle du coupe-circuit
- Politiques de délai d’expiration et de solution de repli
- Pipelines de résilience