Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 22130|Yanıt: 3

[Çerçeve] . .NET dayanıklılık ve geçici arıza yönetimi Polly yeniden deneme stratejisi

[Bağlantıyı kopyala]
Yayınlandı 28.05.2019 23:54:53 | | | |
Bu gönderi en son 2019-5-29 11:16 tarihinde Kongcida tarafından düzenlenmiştir

önsöz
Bir projede, kontrol edilemez nedenlerle projenin işleyişinde sorunlar yaşanır. Örneğin, bir sunucu arızası, hizmet çökmesi, ağ kesintisi vb. Tekrar denenebilir hatalarla karşılaşırsak, Polly —— . kullanabiliriz .NET Elastik ve Geçici Hata İşleme Kütüphaneleri. Projenin resmi web sitesi adresi (Bağlantı girişi görünür.)。 Bugün bu makale, Polly'nin kötü yeniden deneme stratejisini belgeleyecek.


Çevre ve Araçlar


>VS 2017
>Windows 10 sistemi


Metin


1: Yeni bir konsol uygulaması oluşturun.

2: Polly'den alıntı. NuGet paketinde indirilebilir

3: Kodu yapıştır



4: F6 üretir. Sonra debug klasörünün altında oluşturulan .exe dosyasını bul – > çalıştırmak için çift tıkla.



Çıkış mesajını görebilirsiniz: Üç kez tekrar denedi.

F5 hata ayıklama yaparken, bu yöntemin üç kez yapıldığını da görebilirsiniz.


Polly'nin yeniden deneme stratejisi ayrıntılı olarak açıklanıyor

1: İstisna türü


Bu kodda, :handle tekrar denenecek istisna tipini içerir. Yani, çalıştırılan kod belirli bir istisna oluşturduğunda, yeniden deneme fonksiyonu çalıştırılır. Aksi takdirde, tekrar deneme yapılmaz. Çünkü bazı istisnalar tekrar deneme gerektirmez.

Elbette, burada tekrar denemek için birkaç özel istisna türü doldurabiliriz.



Burada DivideByZeroException, sıfıra bölmeye çalışan bir istisnayı temsil eder.
SqlException, Sql Server hata veya uyarı döndürdüğünde ortaya çıkan bir istisnayı gösterir. Örneğin, veritabanı bağlantı arızası, SQL yürütme hatası vb.
SmtpException, posta servisi tarafından ortaya çıkarılan bir istisnayı gösterir. Örneğin, gönderme başarısız oldu, ağ bağlantısı bozuldu ve e-posta hesabı bilgileri anormal oldu.

Belirli istisna türleri için lütfen Microsoft'un resmi dokümantasyonuna bakınız:



2: Yeniden deneme tipi

1) İlk tür yeniden deneme, doğrudan verilen bir sayıda denemedir. Aşağıdaki kod sadece 3 kez tekrar deneniyor.

Her tekrar denemede yapılan ilgili eylemleri tekrar denerken çağırabiliriz. Aşağıdaki kod başka bir görev sonrasıdır. Tekrar deneme yapılırken, tekrar deneme sayısı ve istisna nedeni yazılır.



Ayrıca kodu tekrar denemeye devam edebiliriz, ta ki başarılı olana kadar.



2) İkinci yeniden deneme türü aralıklarla tekrar denemektir. Aşağıdaki kod, her 2 saniyede, 7 saniyede veya 10 saniyede bir tekrar deneme anlamına gelir. 10 saniyeye tekrar dene. Eğer uygulama başarılı olmazsa, yeniden denemeyi sonlandırın.



Tekrar deneme başarılı olana kadar aralıklarla tekrar deneyebiliriz. Bu, bir fonksiyonun hesaplanmasını gerektirir.



Yukarıdaki kod, dolaylı 2'nin güç yeniden denemesine atıfta bulunur. Örneğin, yürütme başarısız olursa, ilk deneme 2 saniye aralıklarla tekrar denenir, ikinci kez 4 saniye aralıklarla ve üçüncü kez 8 saniye aralıklarla tekrar denenir......... Ve benzeri. Ta ki infaz başarılı olana kadar.



Epilog


Not: Yukarıdaki kod Handle'daki istisna türleri, gerçek projenizdeki gerçek duruma göre doldurulmalıdır. Tüm istisnalar tekrar deneme gerektirmez.

İstisna türü, tüm istisnalar için temel sınıftır. Bunu sapta doldurmamak en iyisidir, aksi takdirde çok ciddi sonuçları olur.














Önceki:. Net entegrasyon PayPal IPN iade değeri her zaman GEÇERSIZ olmuştur
Önümüzdeki:C# Verim anahtar kelimelerinin kullanımı
Yayınlandı 29.05.2019 09:17:54 |
Yeniden deneme mekanizmasını AOP'ta kendim uyguladım ve sonunda Polly kütüphanesinin ihtiyaçlarımı karşılayabileceğini gördüm, ancak işlevim uygulandı ve üçüncü taraf bir kütüphaneye atıfta bulunuyorum; içinde işe yaramaz kodlar olabilir, sistemimi optimize edemeyen, bu yüzden şimdilik işe yaramıyor.

Kodum eklenmiştir:



Vaktim olduğunda Polly'ye de bakacağım
Yayınlandı 29.05.2019 09:22:01 |
Xiao Zhaozha 2019-5-29 09:17 tarihinde yayınlandı
Yeniden deneme mekanizmasını AOP'da kendim uyguladım ve sonunda Polly kütüphanesinin ihtiyaçlarımı karşılayabileceğini gördüm, ancak işlevim uygulandı ve giriş ...

Böyle küçük ihtiyaçları kendiniz yapmakta hiçbir sakınca yok
Ve tekrar denemek için bir dahaki denemeyi beklemelisiniz
Yayınlandı 29.05.2019 09:29:22 |
Rüzgarlar 2019-5-29 09:22 tarihinde yayınlandı
Böyle küçük ihtiyaçları kendiniz yapmakta hiçbir sakınca yok
Ve tekrar denemek için bir dahaki seferi beklemeli misiniz?

Hayır, istisna eşzamanlılık, veri ekleme, güncelleme ve silme çatışmalarından kaynaklanmalı, ancak başarılı bir şekilde çalışacak bir şey olmalı, diye ....... Çıkarılan kod işlemi sarar ve istisna otomatik olarak geri alınır. İkinci denemede çatışma ortadan kalktı, bu yüzden bekleme süresi belirlemedim.
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com