IRONSOFTWAREHOME
GELIŞTIRICI GÜNCELLEMELERI

Hangfire .NET Core (Geliştiriciler için Nasıl Çalışır)

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Jacob Mellor
Updated: 21 Nisan 2026

Modern uygulama geliştirme, genellikle büyük iş yüklerini yönetmek için arka plan görevlerini işlemeyi gerektirir. Bu tür senaryolarda, birden fazla işi gerçekleştirebilecek arka plan iş yöneticilerine ihtiyaç duyarız. C# .NET Core uygulamaları için böyle bir arka plan iş yöneticisi Hangfire'dır. Bu blogda, Hangfire arka plan işlerini yönetmeyi ve IronPDF ile PDF Üretimi gibi diğer paketlerle arka planda PDF belgelerini oluşturmak için nasıl kullanacağınızı öğreneceğiz.

Hangfire, arka plan işlerini yönetmek ve yürütmek için güvenilir ve esnek bir çerçeve sağlayarak ASP.NET Core veya .NET Core 6 Web API uygulamalarında arka plan işlemlerinin uygulanmasını basitleştirir. Hangfire, bir NuGet paketi olarak mevcuttur ve aşağıda gösterildiği gibi .NET CLI kullanılarak kurulabilir:

dotnet add package Hangfire --version 1.8.6

.NET Core Web API'de Uygulama

Hangfire hakkında bilgi edinmek için basit bir .NET Core API uygulaması oluşturalım ve CLI kullanarak Hangfire yükleyelim.

dotnet new webapi -n HangfireDemo
cd HangfireDemo
dotnet build
dotnet add package Hangfire --version 1.8.6
dotnet build
SHELL

Burada .NET CLI kullanarak basit bir hava durumu REST API'si oluşturuyoruz. .NET Core Web API projesi, API uç noktalarını çalıştırmak için HangfireDemo adıyla oluşturulur. İkinci satır, yeni oluşturduğumuz "HangfireDemo" klasörüne gider ve ardından projeyi derleriz. Sonrasında, projemize Hangfire NuGet paketini ekleyip tekrar derleriz. Bundan sonra, projenizi Visual Studio 2022 veya JetBrains Rider gibi istediğiniz bir düzenleyici ile açabilirsiniz. Şimdi projeyi çalıştırırsanız Swagger'ı aşağıdaki gibi görebilirsiniz:

Hangfire .NET Core (Geliştirici İçin Nasıl Çalışır): Şekil 1 - Swagger

Burada tarih, özet ve sıcaklık döndüren hava durumu GET API'lerini görebiliriz.

Hangfire .NET Core (Geliştirici İçin Nasıl Çalışır): Şekil 2 - Hava Durumu GET API

Şimdi bir Hangfire arka plan iş işlemcisi ekleyelim. Projeyi Visual Studio'da açın.

Hangfire İş İşlemcisini Ekle

Hangfire uygulamanızda yapılandırın, genellikle Startup.cs dosyasında. Bu, iş depolama alanının ayarlanması ve Hangfire sunucusunun başlatılmasını içerir.

// Startup.cs
using Hangfire;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // Add Hangfire services and use SQL Server as storage option
        services.AddHangfire(config => config.UseSqlServerStorage("your_connection_string"));
        services.AddHangfireServer();
    }
    
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        // Use Hangfire Server and Dashboard for monitoring and managing jobs
        app.UseHangfireServer();
        app.UseHangfireDashboard();
        // Your other configuration settings
    }
}

ConfigureServices yöntemi, Hangfire'ın yeni oluşturulan işlerini kaydetmek için depolama eklemek amacıyla kullanılır. Burada, bir SQL Server veritabanı kullanılır. SQL Server bağlantı dizesi, "your_connection_string" ile değiştirilmelidir. Hangfire.InMemory ile bellek içi depolama da kullanılabilir.

dotnet add package Hangfire.InMemory --version 0.6.0

Ve şu şekilde değiştirin:

services.AddHangfire(configuration => { configuration.UseInMemoryStorage(); });

Arka Plan İşleri Oluştur

Arka plan işleri olarak çalıştırmak istediğiniz yöntemleri tanımlayın. Bu yöntemler, parametresiz bir yapıcıya sahip bir sınıfın statik veya örnek yöntemleri olmalıdır. İşler tekrarlayan işler olarak çalıştırılabilir veya birden fazla iş aynı anda çalıştırılabilir.

public class MyBackgroundJob
{
    public void ProcessJob()
    {
        // Background job logic, can be a recurring job or multiple jobs
        Console.WriteLine("Background job is running...");
    }
}

İşleri Kuyruğa Al

Arka plan işleri, Hangfire API kullanılarak kuyruğa alınır. Arka plan işleri belirli bir zamanda, bir gecikmeden sonra veya düzenli olarak çalıştırılacak şekilde zamanlanabilir.

// Enqueue a job to run immediately
BackgroundJob.Enqueue<MyBackgroundJob>(x => x.ProcessJob());

// Schedule a job to run after a 5-minute delay
BackgroundJob.Schedule<MyBackgroundJob>(x => x.ProcessJob(), TimeSpan.FromMinutes(5));

// Schedule a recurring job using a job ID
RecurringJob.AddOrUpdate<MyBackgroundJob>("jobId", x => x.ProcessJob(), Cron.Daily);

Hangfire Gösterge Panosu ve Sunucu

Hangfire kontrol paneli ve sunucu, gerçek zamanlı iş izleme için Configure yöntemine eklenebilir.

// Run Hangfire server and dashboard
app.UseHangfireServer();
app.UseHangfireDashboard();

Sunucu ayrıca ConfigureServices içine de eklenebilir.

services.AddHangfireServer();

Unut Gitsin İşleri

// Fire and forget jobs are executed only once and almost immediately after creation.
var jobId = BackgroundJob.Enqueue(() => Console.WriteLine("Fire-and-forget!")); // Job ID for fire and forget job

Tekrarlayan İşler

// Recurring jobs fire many times based on a specified CRON schedule.
RecurringJob.AddOrUpdate("myrecurringjob", () => Console.WriteLine("Recurring!"), Cron.Daily);

Gecikmiş İşler

// Delayed jobs are executed only once but after a specified interval.
var jobId = BackgroundJob.Schedule(() => Console.WriteLine("Delayed!"), TimeSpan.FromDays(7));

Devamlılıklar

// Continuation jobs are executed once their parent jobs have completed.
BackgroundJob.ContinueJobWith(jobId, () => Console.WriteLine("Continuation!"));

Toplu İş

// Batch is a group of background jobs created atomically and considered as a single entity.
var batchId = BatchJob.StartNew(x =>
{
    x.Enqueue(() => Console.WriteLine("Job 1"));
    x.Enqueue(() => Console.WriteLine("Job 2"));
});

Toplu Devam İşleri

// Batch continuation is fired when all background jobs in a parent batch are finished.
BatchJob.ContinueBatchWith(batchId, x =>
{
    x.Enqueue(() => Console.WriteLine("Last Job"));
});

Kontrol Paneli

Hangfire Dashboard, arka plan işlerinizle ilgili tüm bilgileri bulabileceğiniz yerdir. OWIN orta katmanı olarak yazılmıştır (OWIN hakkında bilginiz yoksa endişelenmeyin), böylece ASP.NET, ASP.NET MVC, Nancy ve ServiceStack uygulamalarınıza ekleyebilir, ayrıca OWIN Self-Host özelliğini kullanarak Kontrol Paneli'ni Konsol Uygulamaları veya Windows Hizmetleri içinde barındırabilirsiniz.

Kontrol paneli etkinleştirildiğinde, /hangfire/ uzantısında kullanılabilir. Bu panelde, arka planda çalışan işleri yönetebilir, arka plan işlerini zamanlayabilir ve unut gitsin işleri tekrarlayan işlerle birlikte görüntüleyebilirsiniz. İşler bir iş kimliği kullanılarak belirlenebilir.

Canlı İşleme

Hangfire .NET Core (Geliştirici İçin Nasıl Çalışır): Şekil 3 - İşlerin Canlı İşlenmesi

Başarılı İşler

Başarılı işleri aşağıda görüntüleyin.

Hangfire .NET Core (Geliştirici İçin Nasıl Çalışır): Şekil 4 - Başarılı İşler

Zamanlanmış İşler

Hangfire .NET Core (Geliştirici İçin Nasıl Çalışır): Şekil 5 - Planlanmış İşler

Uygulamanız çalıştığında, Hangfire, yapılandırılmış ayarlara göre arka plan işlerini işleyecektir.

Daha gelişmiş yapılandırma seçenekleri ve özellikler için Hangfire belgelerini kontrol etmeyi unutmayın: Hangfire Dokümantasyon ve tamamı GitHub Hangfire Demo'da bulunabilir.

IronPDF Tanıtımı

IronPDF .NET için PDF Generation, Iron Software's PDF Kütüphanesi tarafından sağlanan bir NuGet paketidir ve PDF belgelerini okumaya ve oluşturmaya yardımcı olur. Stil bilgilerini içeren kolayca biçimlendirilmiş belgeleri PDF'ye dönüştürebilir. IronPDF, HTML içeriğinden kolayca PDF oluşturabilir. URL'den HTML'i indirip ardından PDF'ler oluşturabilir.

IronPDF'nin ana çekiciliği, düzenleri ve stilleri koruyan HTML'den PDF'ye Dönüştürme işlevselliğidir. Web içeriğinden PDF oluşturabilir, raporlar, faturalar ve dokümantasyon için idealdir. Bu özellik, HTML dosyalarını, URL'leri ve HTML dizilerini PDF'lere dönüştürmeyi destekler.

using IronPdf;

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

        // 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");

        // 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");

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

IronPDF ile başlama

IronPDF Kütüphanesini Yükleyin

NuGet Paket Yöneticisi Kullanarak Kurulum

NuGet Paket Yöneticisi'ni kullanarak IronPDF'i Hangfire .NET projenize eklemek için şu adımları izleyin:

  1. Visual Studio'yu açın ve Çözüm Gezgini'nde projenize sağ tıklayın.
  2. Bağlam menüsünden "NuGet Paketlerini Yönet..." seçeneğini seçin.
  3. Gözat sekmesine gidin ve IronPDF'i arayın.
  4. Arama sonuçlarından IronPDF kütüphanesini seçin ve Yükle butonuna tıklayın.
  5. Herhangi bir lisans anlaşması istemini kabul edin.

Paket Yöneticisi Konsolu'nu kullanmayı tercih ediyorsanız, aşağıdaki komutu çalıştırın:

PM > Install-Package IronPdf

Bu, projenize IronPDF'i alır ve yükler.

NuGet Web Sitesini Kullanarak Kurulum

IronPDF'nin özellikleri, uyumluluğu ve ek indirme seçenekleri de dahil olmak üzere detaylı bir genel bakış için https://www.nuget.org/packages/IronPdf adresindeki IronPDF sayfasını ziyaret edin.

DLL Kullanarak Kurulum

Alternatif olarak, IronPDF'yi DLL dosyasını kullanarak doğrudan projenize dahil edebilirsiniz. DLL içeren ZIP dosyasını bu IronPDF Doğrudan İndirme bağlantısından indirin. Açın ve DLL'i projenize dahil edin.

Şimdi bir web sitesini PDF dosyası olarak indirmek için bir arka plan işleme işi eklemek üzere uygulamamızı değiştirelim.

namespace HangfireDemo.Core;

public class PdfGenerationJob
{
    public void Start(string website)
    {
        // Create a PDF from any existing web page
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        PdfDocument pdf = renderer.RenderUrlAsPdf(website);
        var filePath = AppContext.BaseDirectory + "result.pdf";
        pdf.SaveAs(filePath);
    }
}

IronPDF, bir URL'den bir web sitesini indirip PDF belgesi olarak kaydetmek için dahili bir metoda sahiptir. Bu metodu, bir işi indirip belirtilen bir konuma kaydetmek için kullanacağız. Bu arka plan işi, birden fazla web sitesi URL'si alacak ve bunları PDF olarak kaydedecek şekilde değiştirilebilir.

Şimdi PDF oluşturma ve indirme API'lerini açığa çıkaran bir denetleyici ekleyelim.

using Hangfire;
using HangfireDemo.Core;
using Microsoft.AspNetCore.Mvc;

namespace HangfireDemo.Controllers;

[ApiController]
[Route("[controller]")]
public class PdfGeneratorController : ControllerBase
{
    [HttpGet("request", Name = "Start PDF Generation")]
    public void Start([FromQuery] string websiteUrl)
    {
        BackgroundJob.Enqueue<PdfGenerationJob>(x => x.Start(websiteUrl));
    }

    [HttpGet("result", Name = "Download PDF Generation")]
    public IActionResult WebResult()
    {
        var filePath = AppContext.BaseDirectory + "result.pdf";
        var stream = new FileStream(filePath, FileMode.Open);
        return new FileStreamResult(stream, "application/octet-stream") { FileDownloadName = "website.pdf" };
    }
}

Burada, indirmeyi başlatmak için web sitesi URL'sini alan arka plan işini başlatmak için bir API ve ortaya çıkan PDF'yi indirmek için başka bir API oluşturduk. API'ler aşağıda gösterildiği şekilde tasvir edilmiştir.

Hangfire .NET Core (Geliştirici İçin Nasıl Çalışır): Şekil 7 - PDFGenerator API'leri

Ve sonuç şöyle görünüyor:

Hangfire .NET Core (Geliştirici İçin Nasıl Çalışır): Şekil 8 - Çıktı

Lisanslama (Ücretsiz Deneme Mevcuttur)

Yukarıdaki kodun su işareti olmadan çalışabilmesi için bir lisans anahtarına ihtiyaç vardır. Geliştiriciler, IronPDF Ücretsiz Deneme ile kaydolarak bir deneme lisansı alabilirler. Deneme lisansı için kredi kartı gerekmez. E-posta kimliğinizi sağlayarak ücretsiz deneme için kaydolabilirsiniz.

Sonuç

Hangfire ve IronPDF birlikte, arka planda PDF oluşturma ve indirme için harika bir kombinasyondur. Hangfire, uzun süren görevlerin verimli bir şekilde işlenmesini sağlar, IronPDF, PDF oluşturma için esnek ve kullanımı kolay bir çözüm sunar. IronPDF hakkında daha fazla bilgi için IronPDF Dokümantasyonu'nu ziyaret edebilirsiniz.

Ayrıca, kodlama becerilerinizi geliştirebilecek ve modern uygulama gereksinimlerini karşılayabilecek Iron Software Ürün Paketi içerisindeki diğer araçları keşfedin.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez