0Pricing
C# Academy · Ders

Yeniden Deneme İlkeleri

Geçici hataları bekleme aralığıyla yeniden deneyin.

Yeniden Deneme İlkeleri, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 4 dersten oluşur.

Polly Nedir?

Polly, uygulamalarınızın geçici hatalarla, yavaş yanıtlarla ve aşırı yüklenmiş bağımlılıklarla başa çıkmasına yardımcı olan bir .NET dayanıklılık kitaplığıdır. Yeniden deneme, devre kesici, zaman aşımı, geri dönüş ve hız sınırlama gibi stratejiler sağlar.

Bu kursta Polly v8'in (Polly.Core API'si) kullanımı ele alınır.

dotnet add package Polly.Core

Neden Yeniden Denemeli?

Birçok hata geçicidir: kısa süreli bir ağ kesintisi, anlık bir zaman aşımı veya yeniden başlayan bir hizmet. İşlemi birkaç dakika sonra yeniden denemek, kullanıcıyı rahatsız etmeden çoğu zaman başarılı olur.

Yeniden deneme yalnızca geçici hataları hedeflemeli, 404 gibi kalıcı hatalarda kesinlikle kullanılmamalıdır.

Temel Bir Yeniden Deneme Stratejisi

Polly v8'de ResiliencePipeline ve RetryStrategyOptions kullanarak bir işlem hattı oluşturursunuz. Varsayılan olarak fırlatılan bir özel durum yeniden denemeyi tetikler.

using Polly;
using Polly.Retry;

var pipeline = new ResiliencePipelineBuilder()
    .AddRetry(new RetryStrategyOptions
    {
        MaxRetryAttempts = 3
    })
    .Build();

İşlem Hattı Üzerinden Çalıştırma

Riskli çağrıyı ExecuteAsync ile sarmalayın. Polly çağrıyı çalıştırır ve çağrı özel durum fırlatırsa yapılandırılan sayıya kadar yeniden dener.

await pipeline.ExecuteAsync(async token =>
{
    await httpClient.GetAsync("https://api.example.com/data", token);
});

Nelerin Yeniden Deneneceğine Karar Verme

Kalıcı hatalarda yeniden denemekten kaçınarak yalnızca belirli özel durumları veya sonuçları yeniden denemek için ShouldHandle ile bir koşul oluşturucu kullanın.

new RetryStrategyOptions<HttpResponseMessage>
{
    ShouldHandle = new PredicateBuilder<HttpResponseMessage>()
        .Handle<HttpRequestException>()
        .HandleResult(r => r.StatusCode == HttpStatusCode.ServiceUnavailable),
    MaxRetryAttempts = 3
};

Sabit ve Üstel Bekleme Aralığı

Anında yeniden denemek, zorlanan bir hizmeti aşırı yükleyebilir. Bekleme aralığı, denemeler arasında süre bırakır. Polly, BackoffType ayarı aracılığıyla sabit, doğrusal ve üstel bekleme aralıklarını destekler.

Üstel Bekleme Aralığı

Üstel bekleme aralığı, her denemede bekleme süresini iki katına çıkarır; örneğin 2 saniye, 4 saniye, 8 saniye. BackoffType.Exponential ile birlikte temel bir Delay ayarlayın.

new RetryStrategyOptions
{
    MaxRetryAttempts = 4,
    BackoffType = DelayBackoffType.Exponential,
    Delay = TimeSpan.FromSeconds(2)
};

Rastgele Sapma Ekleme

Birçok istemci aynı programa göre yeniden denerse eş zamanlı ani yük artışları oluşturur ("telaşlı sürü"). Rastgele sapma, bekleme sürelerine rastgelelik ekler. UseJitter = true seçeneğini etkinleştirin.

new RetryStrategyOptions
{
    MaxRetryAttempts = 4,
    BackoffType = DelayBackoffType.Exponential,
    Delay = TimeSpan.FromSeconds(1),
    UseJitter = true
};

Her Yeniden Denemeye Tepki Verme

OnRetry geri çağrısı, denemeleri günlüklemenize veya ölçümleri göndermenize olanak tanır. Deneme numarasını ve denemeyi tetikleyen hatayı alır.

new RetryStrategyOptions
{
    MaxRetryAttempts = 3,
    OnRetry = args =>
    {
        Console.WriteLine($"Retry {args.AttemptNumber} after {args.RetryDelay}");
        return default;
    }
};

Toplam Yeniden Deneme Süresini Sınırlama

Sınırsız yeniden denemeler, kullanıcıyı çok uzun süre bekletebilir. Yeniden denemeyi bir zaman aşımı stratejisiyle (ileride ele alınacaktır) birleştirin veya kurtarma olasılığı düşük olduğunda işlemin hızlıca başarısız olması için deneme sayısını sınırlayın.

HttpClient İçin Yeniden Deneme

HTTP çağrıları için HttpClient üzerine bir dayanıklılık işleyicisi kaydedin; böylece yeniden denemeler her isteğe otomatik olarak uygulanır.

builder.Services.AddHttpClient("api")
    .AddResilienceHandler("retry", pipeline =>
    {
        pipeline.AddRetry(new HttpRetryStrategyOptions
        {
            MaxRetryAttempts = 3,
            BackoffType = DelayBackoffType.Exponential
        });
    });

Hızlı Kontrol

Yeniden deneme bilginizi sınayın.

Özet

Yeniden deneme ilkeleri, bir işlemi yeniden çalıştırarak geçici hataları ele alır. Polly v8'de AddRetry ile bir işlem hattı oluşturur, kapsamını ShouldHandle ile belirlersiniz; BackoffType.Exponential ve UseJitter kullanarak denemeler arasına süre koyarsınız. Denemeleri izlemek için OnRetry kullanın ve her HttpClient çağrısını korumak üzere bir dayanıklılık işleyicisi kaydedin.

Sıkça Sorulan Sorular

“Yeniden Deneme İlkeleri” dersi ücretsiz mi?

Evet — “Yeniden Deneme İlkeleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 4 dersten oluşur.

“Yeniden Deneme İlkeleri” dersinde ne öğreneceğim?

Geçici hataları bekleme aralığıyla yeniden deneyin. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C# Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Yeniden Deneme İlkeleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Yeniden Deneme İlkeleri
  2. Devre Kesici Kalıbı
  3. Zaman Aşımı ve Geri Dönüş İlkeleri
  4. Dayanıklılık İşlem Hatları
← C# Academy Sayfasına Dön