.NET 8’de Zaman Tabanlı Servisler: IHostedService İle Uygulama
Merhaba! Bu makalede, .NET 8’de IHostedService arayüzünü kullanarak zamanlanmış görevleri nasıl yürütebileceğinizi adım adım göstereceğim. Öncelikle, IHostedService‘in ne işe yaradığını ve neden kullanmamız gerektiğini anlamamız gerekiyor. Kısacası, arka planda çalışan ve belirli aralıklarla veya belirli zamanlarda işlemler gerçekleştiren servisler için ideal bir çözümdür. Bu sayede, ana uygulamamızın performansını etkilemeden, zamanlanmış görevlerimizi yürütmüş oluruz.
Örneğin, günlük veritabanı yedeklemeleri, periyodik olarak e-posta gönderimi veya belirli aralıklarla bir web servisine veri gönderimi gibi işlemler için IHostedService mükemmel bir seçimdir. Şimdi, bir örnek üzerinde konuyu daha detaylı inceleyelim.
IHostedService İle Zamanlanmış Görev Oluşturma
İlk olarak, projemize IHostedService arayüzünü uygulayan bir sınıf ekleyeceğiz. Bu sınıf, StartAsync ve StopAsync metodlarını gerçeklemelidir. StartAsync metodu, servis başlatıldığında çalışacak olan kodumuzu içerirken, StopAsync metodu servis durdurulduğunda çalışır. Aşağıdaki örnekte, her 5 saniyede bir konsola bir mesaj yazdıran bir servis oluşturuyoruz:
using Microsoft.Extensions.Hosting;
using System;
using System.Threading;
using System.Threading.Tasks;
public class TimedHostedService : IHostedService, IDisposable
{
private Timer _timer;
public Task StartAsync(CancellationToken stoppingToken)
{
_timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(5));
return Task.CompletedTask;
}
private void DoWork(object state)
{
Console.WriteLine($"Zamanlanmış görev çalışıyor: {DateTime.Now}");
}
public Task StopAsync(CancellationToken stoppingToken)
{
_timer?.Change(Timeout.Infinite, 0);
return Task.CompletedTask;
}
public void Dispose()
{
_timer?.Dispose();
}
}
Bu kod parçasında, Timer sınıfını kullanarak her 5 saniyede bir DoWork metodunu çağırıyoruz. DoWork metodu ise basitçe konsola bir mesaj yazdırıyor. StopAsync metodu ise Timer‘ı durdurmak için kullanılır. Dispose metodu da kaynakları temizlemek için kullanılmaktadır. Bu servisi projemize eklemek için Startup.cs dosyasında servisi kaydetmemiz gerekir.
Servisi Kaydetme ve Uygulama
Servisimizi kaydetmek için Program.cs dosyasına aşağıdaki satırı eklemeniz yeterlidir:
builder.Services.AddHostedService();
Artık uygulamanızı çalıştırdığınızda, her 5 saniyede bir konsolda “Zamanlanmış görev çalışıyor” mesajını göreceksiniz. Bu basit örnekte, Timer kullanarak zamanlama işlemini gerçekleştiriyoruz. Daha karmaşık zamanlama senaryoları için System.Timers.Timer veya üçüncü parti kütüphaneler kullanabilirsiniz. Örneğin, Quartz.NET gibi kütüphaneler daha gelişmiş zamanlama özellikleri sunmaktadır.
Bu makalede, IHostedService kullanarak .NET 8’de zaman tabanlı servisler oluşturmanın temel adımlarını inceledik. Umarım, bu bilgiler size yardımcı olmuştur. Daha fazla bilgi için fatihsoysal.com sitesini ziyaret edebilirsiniz. Ayrıca, konu ile ilgili daha fazla bilgi için buraya bakabilirsiniz.
Sonuç olarak, IHostedService, .NET uygulamalarında arka plan görevlerini yönetmek için güçlü ve kullanışlı bir araçtır. Uygulamanızın ihtiyaçlarına göre farklı zamanlama mekanizmaları ve kütüphaneler kullanarak bu arayüzü esnek bir şekilde kullanabilirsiniz. Unutmayın ki, performans ve güvenilirlik için doğru zamanlama stratejisi seçimi önemlidir.
#Etiketler: .NET 8, IHostedService, Zaman Tabanlı Servis, Background Service, ASP.NET Core, C#, Zamanlama, Timer, Arka Plan Görevi
