Altbilgi içeriğine atla
.NET YARDıM

Polly Tekrar (Geliştiriciler için Nasıl Çalışır)

Geçici hataları, zaman aşımlarını ve istisnaları nazikçe ele almak, sağlam ve esnek uygulamalar geliştirmek için çok önemlidir. Polly, dayanıklılık ve geçici hata yönetimi yetenekleri sağlayan popüler bir .NET kütüphanesidir. Birçok özelliği arasında, "tekrar deneme" en yaygın kullanılan politikalardan biridir.

Bu makalede, Polly'nin C#'da tekrar deneme politikasını inceleyeceğiz, kullanımı, yapılandırma seçenekleri ve pratik kod örnekleri sunacağız. Ayrıca, IronPDF Library for PDF Generation ile Polly Tekrar Deneme amacını, form talebi sonuçlarının PDF'sini oluşturmak için kullanacağız.

Polly Tekrar Deneme Nedir?

Polly Tekrar Deneme, geliştiricilerin bir hata ya da geçici hatalar nedeniyle başarısız olabilecek işlemleri otomatik olarak yeniden denemelerini sağlayan Polly kütüphanesi tarafından sağlanan bir politikadır. Geçici hatalar, ağ kesintileri, hizmetin kullanılabilir olmaması veya diğer geçici sorunlar nedeniyle ortaya çıkan geçici hatalardır.

Polly'nin tekrar deneme politikası ile, geri döndürmeler için kurallar tanımlayabilir, işlem başına maksimum tekrar deneme sayısı, birden fazla tekrar deneme arasındaki gecikmeler ve başarısız bir isteği yeniden denemek için koşullar gibi geliştirebilir ve dayanıklı uygulamalar oluşturmanıza yardımcı olur; böylece geçici hatalardan kurtulabilir ve kullanıcılar için kesintilere neden olmadan çalışabilirsiniz.

Polly Tekrar Denemeye Başlamak

Kod örneklerine dalmadan önce, bir C# projesinde Polly'nin nasıl kurulacağını ve yapılandırılacağını anlamaya çalışalım.

Polly Yükleme

Polly'yi NuGet Paket Yöneticisi Konsolu aracılığıyla şu komutu kullanarak yükleyebilirsiniz:

Install-Package Polly

Veya .NET CLI üzerinden:

dotnet add package Polly

Polly kullanım deyimlerini ekleme

C# dosyanıza Polly isim alanını dahil edin:

using Polly;
using Polly;
Imports Polly
$vbLabelText   $csharpLabel

Temel Yeniden Deneme Politikası Örneği

Uzak bir hizmetten veri fetch etmeyi simüle eden bir işlemi yeniden denediğimiz basit bir örnekle başlayalım. 3 yeniden deneme ve yeniden denemeler arasında 2 saniye sabit zaman aşımı gecikmesi ile bir yeniden deneme politikası kuracağız.

using System;
using System.Net.Http;
using Polly;

namespace PollyRetryExample
{
    public class Program
    {
        public static void Main(string[] args)
        {
            // Define a retry policy that handles HttpRequestException with a maximum of 3 retries
            var retryPolicy = Policy
                .Handle<HttpRequestException>() // Specify the exception type to handle
                .WaitAndRetry(
                    3, // Max retry attempts
                    retryAttempt => TimeSpan.FromSeconds(2), // Fixed retry delay
                    (exception, timeSpan, retryCount, context) =>
                    {
                        Console.WriteLine("Retry {0} due to {1}", retryCount, exception.Message);
                    });

            try
            {
                // Execute the action within the context of the retry policy
                retryPolicy.Execute(() =>
                {
                    FetchDataFromRemoteService();
                });
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed after 3 retries: {0}", ex.Message);
            }
        }

        // Simulate fetching data that throws HttpRequestException
        public static void FetchDataFromRemoteService()
        {
            throw new HttpRequestException("Failed to fetch data from remote service");
        }
    }
}
using System;
using System.Net.Http;
using Polly;

namespace PollyRetryExample
{
    public class Program
    {
        public static void Main(string[] args)
        {
            // Define a retry policy that handles HttpRequestException with a maximum of 3 retries
            var retryPolicy = Policy
                .Handle<HttpRequestException>() // Specify the exception type to handle
                .WaitAndRetry(
                    3, // Max retry attempts
                    retryAttempt => TimeSpan.FromSeconds(2), // Fixed retry delay
                    (exception, timeSpan, retryCount, context) =>
                    {
                        Console.WriteLine("Retry {0} due to {1}", retryCount, exception.Message);
                    });

            try
            {
                // Execute the action within the context of the retry policy
                retryPolicy.Execute(() =>
                {
                    FetchDataFromRemoteService();
                });
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed after 3 retries: {0}", ex.Message);
            }
        }

        // Simulate fetching data that throws HttpRequestException
        public static void FetchDataFromRemoteService()
        {
            throw new HttpRequestException("Failed to fetch data from remote service");
        }
    }
}
Imports System
Imports System.Net.Http
Imports Polly

Namespace PollyRetryExample
	Public Class Program
		Public Shared Sub Main(ByVal args() As String)
			' Define a retry policy that handles HttpRequestException with a maximum of 3 retries
			Dim retryPolicy = Policy.Handle(Of HttpRequestException)().WaitAndRetry(3, Function(retryAttempt) TimeSpan.FromSeconds(2), Sub(exception, timeSpan, retryCount, context)
				Console.WriteLine("Retry {0} due to {1}", retryCount, exception.Message)
			End Sub)

			Try
				' Execute the action within the context of the retry policy
				retryPolicy.Execute(Sub()
					FetchDataFromRemoteService()
				End Sub)
			Catch ex As Exception
				Console.WriteLine("Failed after 3 retries: {0}", ex.Message)
			End Try
		End Sub

		' Simulate fetching data that throws HttpRequestException
		Public Shared Sub FetchDataFromRemoteService()
			Throw New HttpRequestException("Failed to fetch data from remote service")
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Bu örnekte:

  • Handle<HttpRequestException>(), HttpRequestException ele almak ve meydana gelirse operasyonu yeniden denemek istediğimizi belirtir.
  • WaitAndRetry(), 3 yeniden deneme ve yeniden denemeler arasında 2 saniye sabit gecikme ile yeniden deneme politikasını yapılandırır (belirtilen maksimum süre).
  • onRetry delegesi bir yeniden deneme meydana geldiğinde bir mesaj kaydeder.

Polly Yeniden Deneme (Geliştiriciler İçin Nasıl Çalışır): Şekil 1

Gelişmiş Yeniden Deneme Politikası Yapılandırması

Üstel Geri Çekilme

Üstel geri çekilme, istekler ve yeniden denemeler arasındaki gecikmenin üstel olarak arttığı popüler bir yeniden deneme stratejisidir. Polly, WaitAndRetry() kullanarak üstel geri çekilmeyi uygulamak için uygun bir yol sağlar.

var retryPolicy = Policy
    .Handle<HttpRequestException>()
    .WaitAndRetry(
        retryCount: 3, // Max retry attempts
        sleepDurationProvider: attempt => TimeSpan.FromSeconds(Math.Pow(2, attempt)), // Exponential delay
        onRetry: (exception, timeSpan, retryCount, context) =>
        {
            Console.WriteLine($"Retry {retryCount} due to {exception.Message}");
        });
var retryPolicy = Policy
    .Handle<HttpRequestException>()
    .WaitAndRetry(
        retryCount: 3, // Max retry attempts
        sleepDurationProvider: attempt => TimeSpan.FromSeconds(Math.Pow(2, attempt)), // Exponential delay
        onRetry: (exception, timeSpan, retryCount, context) =>
        {
            Console.WriteLine($"Retry {retryCount} due to {exception.Message}");
        });
Dim retryPolicy = Policy.Handle(Of HttpRequestException)().WaitAndRetry(retryCount:= 3, sleepDurationProvider:= Function(attempt) TimeSpan.FromSeconds(Math.Pow(2, attempt)), onRetry:= Sub(exception, timeSpan, retryCount, context)
	Console.WriteLine($"Retry {retryCount} due to {exception.Message}")
End Sub)
$vbLabelText   $csharpLabel

Polly Yeniden Deneme (Geliştiriciler İçin Nasıl Çalışır): Şekil 2

Devre Kesici ile Yeniden Deneme

Yeniden denemeyi devre kesici ile birleştirmek, bir hizmet sürekli arızalandığında tekrar eden yeniden denemeleri önleyerek direnci daha da artırabilir. Polly, yeniden deneme ve devre kesici politikalarını kolayca birleştirmenizi sağlar.

// Define a circuit breaker policy
var circuitBreakerPolicy = Policy
    .Handle<HttpRequestException>()
    .CircuitBreaker(
        exceptionsAllowedBeforeBreaking: 3, // Number of exceptions before breaking
        durationOfBreak: TimeSpan.FromSeconds(30), // Time circuit stays open
        onBreak: (ex, breakDelay) =>
        {
            Console.WriteLine($"Circuit broken due to {ex.Message}. Retry after {breakDelay.TotalSeconds} seconds.");
        },
        onReset: () =>
        {
            Console.WriteLine("Circuit reset.");
        });

// Define a retry policy
var retryPolicy = Policy
    .Handle<HttpRequestException>()
    .WaitAndRetry(
        retryCount: 3, // Max retry attempts
        sleepDurationProvider: attempt => TimeSpan.FromSeconds(2), // Fixed retry delay
        onRetry: (exception, timeSpan, retryCount, context) =>
        {
            Console.WriteLine($"Retry {retryCount} due to {exception.Message}");
        });

// Combine both policies into a single policy wrap
var policyWrap = Policy.Wrap(circuitBreakerPolicy, retryPolicy);
// Define a circuit breaker policy
var circuitBreakerPolicy = Policy
    .Handle<HttpRequestException>()
    .CircuitBreaker(
        exceptionsAllowedBeforeBreaking: 3, // Number of exceptions before breaking
        durationOfBreak: TimeSpan.FromSeconds(30), // Time circuit stays open
        onBreak: (ex, breakDelay) =>
        {
            Console.WriteLine($"Circuit broken due to {ex.Message}. Retry after {breakDelay.TotalSeconds} seconds.");
        },
        onReset: () =>
        {
            Console.WriteLine("Circuit reset.");
        });

// Define a retry policy
var retryPolicy = Policy
    .Handle<HttpRequestException>()
    .WaitAndRetry(
        retryCount: 3, // Max retry attempts
        sleepDurationProvider: attempt => TimeSpan.FromSeconds(2), // Fixed retry delay
        onRetry: (exception, timeSpan, retryCount, context) =>
        {
            Console.WriteLine($"Retry {retryCount} due to {exception.Message}");
        });

// Combine both policies into a single policy wrap
var policyWrap = Policy.Wrap(circuitBreakerPolicy, retryPolicy);
' Define a circuit breaker policy
Dim circuitBreakerPolicy = Policy.Handle(Of HttpRequestException)().CircuitBreaker(exceptionsAllowedBeforeBreaking:= 3, durationOfBreak:= TimeSpan.FromSeconds(30), onBreak:= Sub(ex, breakDelay)
			Console.WriteLine($"Circuit broken due to {ex.Message}. Retry after {breakDelay.TotalSeconds} seconds.")
End Sub, onReset:= Sub()
			Console.WriteLine("Circuit reset.")
End Sub)

' Define a retry policy
Dim retryPolicy = Policy.Handle(Of HttpRequestException)().WaitAndRetry(retryCount:= 3, sleepDurationProvider:= Function(attempt) TimeSpan.FromSeconds(2), onRetry:= Sub(exception, timeSpan, retryCount, context)
	Console.WriteLine($"Retry {retryCount} due to {exception.Message}")
End Sub)

' Combine both policies into a single policy wrap
Dim policyWrap = Policy.Wrap(circuitBreakerPolicy, retryPolicy)
$vbLabelText   $csharpLabel

Bu örnekte:

  • CircuitBreaker(), 3 istisnadan sonra kırılan ve 30 saniye açık kalan bir devre kesici politikası tanımlar.
  • Policy.Wrap(), devre kesici ve yeniden deneme politikalarını tek bir politika içinde birleştirir.

Polly Yeniden Deneme (Geliştiriciler İçin Nasıl Çalışır): Şekil 3

IronPDF'ye Giriş

IronPDF C# PDF Kütüphanesi Genel Bakış, geliştiricilerin .NET uygulamalarında PDF belgeleri oluşturmasına, düzenlemesine ve yönetmesine olanak tanıyan güçlü bir C# kütüphanesidir. Faturalar, raporlar veya başka türde PDF belgeleri oluşturmanız gerekip gerekmediğinde, IronPDF, bu süreci basitleştiren sezgisel bir API sağlar.

IronPDF ile, HTML, CSS ve hatta ASP.NET web sayfalarını kolayca PDF'ye dönüştürebilir, bu da onu geniş bir uygulama yelpazesi için çok yönlü bir araç haline getirir. Ek olarak, PDF'lere metin, resim ve etkileşimli öğeler ekleme gibi gelişmiş özellikler ile birlikte şifreleme ve dijital imzalarla güvenlik sağlama imkanı sunar.

IronPDF, orijinal düzenlerin ve stillerin tam korumasını sağlayarak, HTML'den PDF'ye dönüştürmede üstünlük sağlar. Web tabanlı içerikten raporlar, faturalar ve belgeler üretmek için mükemmeldir. IronPDF, HTML dosyalarından, URL'lerden ve ham HTML dizgilerinden yüksek kaliteli PDF dosyalarına dönüştürmeyi destekler.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF ile Polly Yeniden Deneme

IronPDF ile çalışırken, dış kaynaklardan veri fetch etmeniz veya bir PDF üretmeden önce karmaşık işlemler gerçekleştirmeniz gereken senaryolar olabilir.

Böyle durumlarda, geçici hatalar veya PDF oluşturma başarısızlıklarına yol açabilecek geçici sorunlarla karşılaşabilirsiniz. Bu geçici hataları nazikçe ele almak için, IronPDF ile birlikte Polly Yeniden Deneme'yi kullanabilirsiniz.

IronPDF ve Polly'yi Yükleme

Başlamadan önce, projenizde IronPDF NuGet paketini yüklediğinizden emin olun.

Install-Package IronPdf

IronPDF ile Polly Yeniden Deneme Kullanma

IronPDF kullanarak bir PDF oluştururken geçici hataları ele almak için Polly Yeniden Deneme'yi nasıl kullandığımız bir örneğe bakalım. Aşağıdaki örnekte, bir dış API'den veri fetch etmeyi simüle edeceğiz ve ardından bu veriye dayanarak bir PDF oluşturacağız. Başarısızlık durumunda verileri fetch etme işlemini gerçekleştirmek için Polly Retry kullanacağız.

using System;
using System.Net.Http;
using System.Threading.Tasks;
using IronPdf;
using Polly;

namespace IronPdfWithPollyRetry
{
    public class Program
    {
        public static async Task Main(string[] args)
        {
            // Define a retry policy with async capability
            var retryPolicy = Policy
                .Handle<HttpRequestException>() // Specify exception type to handle
                .WaitAndRetryAsync(
                    3, // Retry attempts
                    retryAttempt => TimeSpan.FromSeconds(2), // Calculated retry delay
                    (exception, timeSpan, retryCount, context) =>
                    {
                        Console.WriteLine("Retry " + retryCount + " due to " + exception.Message);
                    });

            // Execute the retry policy asynchronously
            var pdf = await retryPolicy.ExecuteAsync(async () =>
            {
                var data = await FetchDataFromExternalApiAsync(); // Fetch data from an external source
                return GeneratePdfFromData(data); // Generate PDF using fetched data
            });

            pdf.SaveAs("GeneratedDocument.pdf");
        }

        // Simulate fetching data from an external API
        static async Task<string> FetchDataFromExternalApiAsync()
        {
            await Task.Delay(100); // Simulate delay
            throw new HttpRequestException("Failed to fetch data from external API");
        }

        // Generate PDF using IronPDF based on the fetched data
        static PdfDocument GeneratePdfFromData(string data)
        {
            var htmlContent = "<html><body><h1>Data: " + data + "</h1></body></html>";
            var renderer = new ChromePdfRenderer();
            return renderer.RenderHtmlAsPdf(htmlContent);
        }
    }
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
using IronPdf;
using Polly;

namespace IronPdfWithPollyRetry
{
    public class Program
    {
        public static async Task Main(string[] args)
        {
            // Define a retry policy with async capability
            var retryPolicy = Policy
                .Handle<HttpRequestException>() // Specify exception type to handle
                .WaitAndRetryAsync(
                    3, // Retry attempts
                    retryAttempt => TimeSpan.FromSeconds(2), // Calculated retry delay
                    (exception, timeSpan, retryCount, context) =>
                    {
                        Console.WriteLine("Retry " + retryCount + " due to " + exception.Message);
                    });

            // Execute the retry policy asynchronously
            var pdf = await retryPolicy.ExecuteAsync(async () =>
            {
                var data = await FetchDataFromExternalApiAsync(); // Fetch data from an external source
                return GeneratePdfFromData(data); // Generate PDF using fetched data
            });

            pdf.SaveAs("GeneratedDocument.pdf");
        }

        // Simulate fetching data from an external API
        static async Task<string> FetchDataFromExternalApiAsync()
        {
            await Task.Delay(100); // Simulate delay
            throw new HttpRequestException("Failed to fetch data from external API");
        }

        // Generate PDF using IronPDF based on the fetched data
        static PdfDocument GeneratePdfFromData(string data)
        {
            var htmlContent = "<html><body><h1>Data: " + data + "</h1></body></html>";
            var renderer = new ChromePdfRenderer();
            return renderer.RenderHtmlAsPdf(htmlContent);
        }
    }
}
Imports System
Imports System.Net.Http
Imports System.Threading.Tasks
Imports IronPdf
Imports Polly

Namespace IronPdfWithPollyRetry
	Public Class Program
		Public Shared Async Function Main(ByVal args() As String) As Task
			' Define a retry policy with async capability
			Dim retryPolicy = Policy.Handle(Of HttpRequestException)().WaitAndRetryAsync(3, Function(retryAttempt) TimeSpan.FromSeconds(2), Sub(exception, timeSpan, retryCount, context)
				Console.WriteLine("Retry " & retryCount & " due to " & exception.Message)
			End Sub)

			' Execute the retry policy asynchronously
			Dim pdf = Await retryPolicy.ExecuteAsync(Async Function()
				Dim data = Await FetchDataFromExternalApiAsync() ' Fetch data from an external source
				Return GeneratePdfFromData(data) ' Generate PDF using fetched data
			End Function)

			pdf.SaveAs("GeneratedDocument.pdf")
		End Function

		' Simulate fetching data from an external API
		Private Shared Async Function FetchDataFromExternalApiAsync() As Task(Of String)
			Await Task.Delay(100) ' Simulate delay
			Throw New HttpRequestException("Failed to fetch data from external API")
		End Function

		' Generate PDF using IronPDF based on the fetched data
		Private Shared Function GeneratePdfFromData(ByVal data As String) As PdfDocument
			Dim htmlContent = "<html><body><h1>Data: " & data & "</h1></body></html>"
			Dim renderer = New ChromePdfRenderer()
			Return renderer.RenderHtmlAsPdf(htmlContent)
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

Bu C# kodu, yeniden deneme politikalarını uygulamak için Polly kütüphanesini IronPDF ile birlikte kullanarak bir PDF belgesi oluşturmayı nasıl yapacağınızı gösterir. Main yöntemi, Polly'nin WaitAndRetryAsync yöntemi kullanılarak bir yeniden deneme politikası başlatır.

Bu politika, HttpRequestException ele alması ve ilk deneme ile yeniden denemeler arasında 2 saniye gecikme ile operasyona 3 kez kadar yeniden deneme yapması gerektiğini belirtir. Bir yeniden deneme başarısızlığı gerçekleşirse, yeniden deneme denemesi numarasını ve istisna mesajını konsolda belirten bir mesaj yazdırılır.

Main yöntemi içinde, yeniden deneme politikası mantığı retryPolicy.ExecuteAsync() kullanılarak eşzamansız olarak yürütülür. Bu yürütme içinde iki eşzamansız işlem birbirine zincirlenmiştir: FetchDataFromExternalApiAsync() ve GeneratePdfFromData(data).

Eğer FetchDataFromExternalApiAsync() başarısız olursa (sadece simüle edilen bir istisna ile başlatıldığı için), yeniden deneme politikası HttpRequestException yakalayacak, yeniden deneme girişimini kaydedecek ve operasyonu yeniden deneyecektir.

FetchDataFromExternalApiAsync() yöntemi, harici bir API'den veri fetch etme işlemini bir gecikme ile simüle eder ve başarısız istekleri simüle etmek için kasıtlı olarak bir HttpRequestException fırlatır.

Polly Yeniden Deneme (Geliştiriciler İçin Nasıl Çalışır): Şekil 4

Sonuç

Sonuç olarak, Polly'nin yeniden deneme politikası, geçici hataları ele almak ve C# uygulamalarında dayanıklılığı sağlamak için paha biçilmezdir. Yeniden deneme denemeleri, gecikmeler ve koşulları yapılandırmadaki esnekliği, geliştiricilerin dayanıklılık stratejilerini belirli gereksinimlere göre uyarlamalarına olanak tanır.

Bağımsız olarak veya IronPDF gibi kütüphanelerle birlikte kullanılsa da, Polly, geçici hatalardan nazikçe kurtulan uygulamaların oluşturulmasına yardımcı olur, yazılımın kullanıcı deneyimini ve güvenilirliğini artırır.

Polly'nin yeniden deneme yeteneklerini entegre ederek, geliştiriciler geçici sorunlara uyum sağlayabilen ve bunlardan kurtulan daha dayanıklı sistemler inşa edebilir, sonuç olarak uygulamalarının genel kalitesini ve güvenilirliğini artırabilir.

IronPDF, piyasadaki en iyi C# PDF kütüphanesi olup, aynı zamanda bir deneme lisansı sunar; IronPDF fiyatları $799 USD'den başlar.

IronPDF kullanarak HTML'yi PDF'ye dönüştürme hakkında bilgi almak için, aşağıdaki IronPDF HTML'den PDF'ye Dönüştürme Eğitimini ziyaret edin.

Sıkça Sorulan Sorular

C#'da Polly Retry nedir?

Polly Retry, C#'daki Polly kütüphanesinin bir özelliğidir. Geliştiricilere, ağ hataları veya hizmetin kullanılamaması gibi geçici sorunlar nedeniyle başarısız olan işlemleri otomatik olarak yeniden deneme imkanı tanır. Bu, geçici hataları zarif bir şekilde ele alarak dayanıklı uygulamalar oluşturmanıza yardımcı olur.

Temel bir yeniden deneme politikasını Polly ile nasıl uygulayabilirim?

Polly'de temel bir yeniden deneme politikasını, örneğin HttpRequestException gibi istisnaları ele alarak ve her deneme arasında iki saniyelik sabit bir gecikmeyle maksimum üç defa yeniden denemeye ayarlayarak uygulayabilirsiniz.

Polly'de üssel geri çekilmenin önemi nedir?

Polly'deki üssel geri çekilme, yeniden denemeler arasındaki gecikmeyi üssel olarak artırmak için kullanılır ve bu da başarısızlık sırasında hizmet üzerindeki yükü azaltmaya yardımcı olur. Polly'nin WaitAndRetry yöntemi kullanılarak üssel büyümeye dayalı gecikmeleri hesaplayarak uygulanabilir.

C# projesine Polly nasıl kurarım?

C# projesinde Polly'yi, NuGet Package Manager Konsolu üzerinden Install-Package Polly komutuyla veya .NET CLI ile dotnet add package Polly aracılığıyla kurabilirsiniz.

Polly'nin yeniden deneme politikası diğer dayanıklılık stratejileri ile birleştirilebilir mi?

Evet, Polly'nin yeniden deneme politikasını bir devre kesici ile birleştirerek, Policy.Wrap yöntemi kullanarak uygulama dayanıklılığını artırabilir ve bir hizmet sürekli başaramadığında tekrar tekrar yeniden denemelerin önüne geçebilirsiniz.

HTML'yi C#'de PDF'ye nasıl dönüştürebilirim?

IronPDF'in RenderHtmlAsPdf gibi yöntemlerini kullanarak HTML dize formatlarını PDF'lere dönüştürebilirsiniz. IronPDF ayrıca HTML dosyalarını ve web sayfalarını, CSS dahil olmak üzere, PDF formatına dönüştürmeyi destekler.

Polly'nin yeniden deneme politikası C# uygulamaları için neden önemlidir?

Polly'nin yeniden deneme politikası, C# uygulamalarında geçici hataları ele almak, sağlamlığı sağlamak ve kullanıcı deneyimini geliştirmek için çok önemlidir. Sistem, geçici hatalardan çökmeksizin kurtulabilir.

PDF oluşturma sürecinde yeniden deneme stratejileri nasıl uygulanabilir?

PDF oluştururken, geçici hataları ele almak için Polly kullanarak yeniden deneme stratejileri uygulanabilir. Polly'nin yeniden deneme yeteneklerini IronPDF ile entegre ederek, geçici ağ veya hizmet sorunları yaşandığında PDF işlemlerini birden fazla kez gerçekleştirmeyi deneyebilirsiniz.

C# için bir PDF kütüphanesi olan IronPDF nasıl kurulur?

IronPDF'yi NuGet Package Manager ile Install-Package IronPdf komutuyla kurarak, C# uygulamalarınızda PDF belgeleri oluşturabilir, düzenleyebilir ve işleyebilirsiniz.

PDF oluşturma için IronPDF'in faydaları nelerdir?

IronPDF, .NET uygulamalarında PDF belgeleri oluşturmak ve işlemek için güçlü özellikler sunar. HTML, CSS ve web sayfalarını PDF'lere dönüştürme, metin ve görüntü ekleme ve belgeleri şifreleme ile güvenli hale getirme gibi özellikleri destekler.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Chief Technology Officer

Jacob Mellor, Iron Software'in Teknoloji Müdürü ve C# PDF teknolojisinin öncüsü olan vizyoner bir mühendis. Iron Software’in temel kod tabanının ilk geliştiricisi olarak, şirketin ürün mimarisini kuruluşundan bu yana şekillendirdi ve CEO Cameron Rimington ile birlikte NASA, Tesla ve ...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara