Zaman Aşımı ve Geri Dönüş İlkeleri
Beklemeleri sınırlandırın ve uygun geri dönüşler sağlayın.
Zaman Aşımı ve Geri Dönüş İlkeleri, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 3. 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.
Zaman Aşımları Neden Önemlidir?
Hiç dönmeyen bir çağrı, başarısız olan bir çağrıdan daha kötüdür: iş parçacıklarını ve bağlantıları meşgul tutar. Bir zaman aşımı stratejisi, Polly işlemi iptal etmeden önce ne kadar süre çalışabileceğini sınırlar.
Zaman Aşımı Ekleme
Polly v8, AddTimeout sağlar. Sınır aşıldığında bir TimeoutRejectedException fırlatır ve temel belirteci iptal eder.
using Polly.Timeout;
var pipeline = new ResiliencePipelineBuilder()
.AddTimeout(TimeSpan.FromSeconds(3))
.Build();İşbirlikçi İptal
Zaman aşımı, geri çağrınıza geçirilen CancellationToken değerini iptal ederek çalışır. Zaman aşımının hızlı biçimde etkili olabilmesi için kodunuzun bu belirtece uyması gerekir.
await pipeline.ExecuteAsync(async token =>
{
// token is cancelled when the timeout fires
await httpClient.GetAsync(url, token);
});Zaman Aşımlarına Tepki Verme
Bir işlem yarıda kesildiğinde günlük kaydı oluşturmak veya ölçümleri göndermek için TimeoutStrategyOptions ile bir OnTimeout geri çağrısı kullanın.
new TimeoutStrategyOptions
{
Timeout = TimeSpan.FromSeconds(3),
OnTimeout = args =>
{
Console.WriteLine($"Timed out after {args.Timeout}");
return default;
}
};Geri Dönüş Nedir?
Geri dönüş, bir işlem başarısız olduğunda yerine kullanılacak bir sonuç sağlar; böylece kullanıcı bir hata yerine özellikleri azaltılmış ama sorunsuz bir deneyim yaşar: önbelleğe alınmış veriler, varsayılan bir değer veya anlaşılır bir ileti.
Geri Dönüş Stratejisi Ekleme
AddFallback için tür bilgisi içeren bir işlem hattı gerekir. Hangi hataların ele alınacağını ve bunun yerine hangi değerin döndürüleceğini belirlersiniz.
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();Geri Dönüş Olarak Önbelleğe Alınmış Verileri Döndürme
Yaygın bir yaklaşım, canlı çağrı başarısız olduğunda önbellekten son bilinen geçerli değeri sunarak uygulamanın yanıt vermeye devam etmesini sağlamaktır.
FallbackAction = args =>
{
var cached = _cache.GetLastKnownGood();
return Outcome.FromResultAsValueTask(cached);
}Geri Dönüşleri İzleme
OnFallback geri çağrısı, geri dönüş çalıştırıldığında devreye girer; bu, özellikleri azaltılmış bir yolun kullanıldığını günlüklemek için idealdir.
new FallbackStrategyOptions<string>
{
FallbackAction = args => Outcome.FromResultAsValueTask("default"),
OnFallback = args =>
{
Console.WriteLine("Fallback executed");
return default;
}
};Zaman Aşımı ve Geri Dönüşü Birlikte Kullanma
Bu ikisini birleştirmek güçlü bir yaklaşımdır: zaman aşımı beklemeyi sınırlar, geri dönüş ise zaman aşımı (veya ele alınan başka bir hata) gerçekleştiğinde bir değer sağlar; böylece çağrılar hiçbir zaman takılı kalmaz veya çökmek zorunda kalmaz.
Makul Zaman Aşımları Seçme
Zaman aşımlarını rastgele küçük değerlere göre değil, gerçekçi gecikme süresini ve ek payı dikkate alarak belirleyin. Süre çok kısa olursa sağlıklı çağrılar başarısız olur; çok uzun olursa zaman aşımının amacını ortadan kaldırır.
Geri Dönüş Son Çaredir
Geri dönüşü en dış strateji olarak yerleştirin; böylece yeniden denemelerden, devre kesicilerden ve zaman aşımlarından kaynaklanan hataların tümünü yakalayabilir ve çağırana her zaman kullanılabilir bir sonuç ulaştırabilirsiniz.
Hızlı Kontrol
Zaman aşımı ve geri dönüş stratejilerini sınayın.
Özet
Zaman aşımları, AddTimeout ile işlem süresini sınırlar, belirteci iptal eder ve TimeoutRejectedException fırlatır (belirtece uymayı unutmayın!). Geri dönüşler, FallbackAction içeren AddFallback aracılığıyla yerine kullanılacak sonuçlar sağlar ve çoğu zaman önbelleğe alınmış verileri sunar. Birlikte kullanıldıklarında uygulamaların yanıt vermeye devam etmesini sağlarlar: beklemeyi sınırlar, ardından özellikleri düzgünce azaltırlar. Ele alınan tüm hataları yakalayabilmesi için geri dönüşü en dışa yerleştirin.
Sıkça Sorulan Sorular
“Zaman Aşımı ve Geri Dönüş İlkeleri” dersi ücretsiz mi?
Evet — “Zaman Aşımı ve Geri Dönüş İ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.
“Zaman Aşımı ve Geri Dönüş İlkeleri” dersinde ne öğreneceğim?
Beklemeleri sınırlandırın ve uygun geri dönüşler sağlayın. 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 3. dersidir.
“Zaman Aşımı ve Geri Dönüş İ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
- Yeniden Deneme İlkeleri
- Devre Kesici Kalıbı
- Zaman Aşımı ve Geri Dönüş İlkeleri
- Dayanıklılık İşlem Hatları