Article

Pazartesi, 23 Eyl 2024 - 22:09

.NET Core Geliştirme İçin Favori Kütüphanelerim

Owner: Barış Gelebek

".NET Core, modern uygulamalar geliştirmek için güçlü ve çok yönlü bir framework haline geldi. Geliştirici olarak karşılaştığım birçok kütüphane, üretkenliğimi ve iş kalitemi önemli ölçüde artırdı. "



 Bu yazıda, .NET Core geliştirme sürecimi kolaylaştıran ve vazgeçilmez hale gelen favori kütüphanelerimi paylaşacağım.


1. Riok.Mapperly

.NET Core ekosistemindeki en sevdiğim araçlardan biri Riok.Mapperly. Bu kütüphane, nesne eşleştirmeleri oluşturmak için tasarlanmış bir kaynak üreteci. Geleneksel eşleştirme kütüphanelerinin çalışma zamanında yansıtma kullanmasına karşın, Mapperly eşleştirme kodunu derleme zamanında oluşturur. Bu, performansı artırarak yükü önemli ölçüde azaltır.

Mapperly'nin ürettiği kod, temiz ve anlaşılırdır; bu da eşleştirmeleri doğrulamayı veya hata ayıklamayı kolaylaştırır. Elde edilen kodu görsel olarak inceleyebilmek, her şeyin beklendiği gibi çalıştığından emin olmanızı sağlar.

Mapperly ile başlamak için NuGet paketini projenize ekleyin:

dotnet add package Riok.Mapperly

Ardından, eşleyicinizi kısmi bir sınıf olarak tanımlayıp [Mapper] niteliğiyle süsleyin. Mapperly, bildiriminize dayalı olarak gerekli eşleştirme yöntemlerini otomatik olarak oluşturacaktır:

[Mapper] public partial class ArabaMapper { public partial ArabaDto ArabaToArabaDto(Araba araba); }

Bu eşleyiciyi kullanarak, üretilen yöntem derleme zamanında eşleştirme işlemini gerçekleştirecektir:

var mapper = new ArabaMapper();
var araba = new Araba { KoltukSayısı = 10, ... }; var dto = mapper.ArabaToArabaDto(araba); Console.WriteLine(dto.KoltukSayısı); // Çıktı: 10

Mapperly, verimlilik ve sadelik sunarak, karmaşık modeller ve dönüşümlerle çalışan geliştiriciler için mükemmel bir ek olur.


2. FluentValidation

Bir diğer vazgeçilmez araç FluentValidation. Bu kütüphane, akıcı bir arayüz ve lambda ifadeleri kullanarak güçlü tipte doğrulama kuralları tanımlamaya olanak tanır. FluentValidation, sağlam ve sürdürülebilir doğrulama mantığı oluşturmayı kolaylaştırarak, kod tabanınızı karmaşadan uzak tutar.

FluentValidation’ı NuGet üzerinden kolayca yükleyebilirsiniz:

dotnet add package FluentValidation

Doğrulama kuralları oluşturmaya başlamak için AbstractValidator<T> sınıfından türetilirsiniz; burada T, doğrulamak istediğiniz modeldir. Her özellik için akıcı bir API kullanarak kurallar tanımlayabilirsiniz:

public class MüşteriValidator : AbstractValidator<Müşteri>
{ public MüşteriValidator() { RuleFor(x => x.Soyad).NotEmpty(); RuleFor(x => x.Ad).NotEmpty().WithMessage("Lütfen bir isim belirtin"); RuleFor(x => x.İndirim).NotEqual(0).When(x => x.HasDiscount); RuleFor(x => x.Adres).Length(20, 250); RuleFor(x => x.PostaKodu).Must(BeAValidPostcode).WithMessage("Lütfen geçerli bir posta kodu belirtin"); } private bool BeAValidPostcode(string postcode) { // Özel doğrulama mantığı buraya } }

Bir modeli doğrulamak için, doğrulayıcıyı örnekleyip Validate yöntemini çağırabilirsiniz:

var müşteri = new Müşteri();
var validator = new MüşteriValidator(); ValidationResult results = validator.Validate(müşteri); if (!results.IsValid) { // Doğrulama hatalarını yönetme foreach (var failure in results.Errors) { Console.WriteLine(failure.ErrorMessage); } }

FluentValidation, kuralları açık ve öz bir şekilde ifade etmenizi sağlayarak, sürdürülebilir doğrulama yapmanız için mükemmel bir araçtır.


3. FluentResults

.NET Core geliştirmemde çok faydalı bulduğum bir diğer kütüphane FluentResults. Bu kütüphane, başarı ve başarısızlığı daha öngörülebilir bir şekilde, fonksiyonel bir biçimde ele almanızı sağlar; akış kontrolü için istisnalara ihtiyaç duymaz. FluentResults, genellikle fonksiyonel programlamada görülen bir modeli benimser; burada yöntemler, başarı veya başarısızlık durumunu belirten bir sonuç nesnesi döner.

FluentResults'ı yüklemek için NuGet üzerinden ekleyebilirsiniz:

dotnet add package FluentResults

FluentResults ile basit ve sezgisel bir şekilde başarı veya başarısızlık belirtebilirsiniz:

// Başarı sonucu
Result successResult = Result.Ok(); // Hata sonucu Result errorResult = Result.Fail("Bir sorun oluştu.");

Değer döndüren yöntemler için, o değeri bir sonuç nesnesinde saklayabilirsiniz:

// Değerle başarı sonucu
Result<int> successResult = Result.Ok(42); // Değerle hata sonucu Result<int> errorResult = Result.Fail<int>("Değeri almakta başarısız oldu");

Sonuç nesnesine sahip olduğunuzda, başarı veya başarısızlık durumunu kolayca kontrol edebilir ve hataları yönetebilirsiniz:

Result<int> result = SomeOperation();
if (result.IsFailed) { // Hatalı ise foreach (var error in result.Errors) { Console.WriteLine(error.Message); } } else { // Başarılı ise int value = result.Value; Console.WriteLine($"İşlem, değer ile başarılı: {value}"); }

FluentResults, ayrıntılı hata mesajları sunmanın yanı sıra, özel hata ve başarı nesneleri tasarlamanıza da olanak tanır, bu da onu .NET Core uygulamalarında dayanıklı hata yönetimi için ideal bir araç haline getirir.


4. Serilog

Serilog, .NET Core için en popüler ve esnek günlük kaydı kütüphanelerinden biridir. Temiz bir API ile tasarlanmış olup, her .NET uygulamasına yapılandırılmış günlük kaydı eklemeyi kolaylaştırır. Serilog'un yapılandırılmış olay verilerini desteklemesi, olaylar hakkında detaylı ve bağlam zengin bilgileri kaydetmenizi sağlar; bu, karmaşık sistemlerin hata ayıklanmasında ve izlenmesinde son derece faydalıdır.

Serilog'u yüklemek için gerekli paketleri NuGet üzerinden ekleyebilirsiniz:

dotnet add package Serilog
dotnet add package Serilog.Sinks.Console dotnet add package Serilog.Sinks.File

Serilog'u şu şekilde kolayca yapılandırabilirsiniz:

Log.Logger = new LoggerConfiguration()
.WriteTo.Console() .WriteTo.File("log.txt", rollingInterval: RollingInterval.Day) .CreateLogger(); Log.Information("Merhaba, Serilog!");

Bu örnek, mesajları hem konsola hem de döngüsel bir dosyaya kaydeder. Serilog'un mesaj şablonları, yapılandırılmış verileri yakalamanıza olanak tanır:

var position = new { Latitude = 25, Longitude = 134 };
var elapsedMs = 34; Log.Information("İşlem {@Position} süresince {Elapsed} ms", position, elapsedMs);

Burada @ sembolü, Serilog'a Position nesnesini yapılandırılmış JSON formatında serileştirmesini belirtir; bu, günlüklerin sorgulanmasını ve analiz edilmesini kolaylaştırır.

Yapılandırılmış günlük kaydı, Serilog'un en güçlü yönüdür. Sadece metin kaydetmekle kalmaz, olaylar hakkında zengin veriler toplar, bu da daha derin içgörüler ve sorgulanabilirlik sağlar. Serilog, dosya çıktıları, konsol, veritabanları, bulut hizmetleri ve daha fazlasını içeren birçok çıkış desteği sunarak, her tür .NET uygulaması için çok yönlü bir günlük kaydı aracı haline gelir.


5. Quartz.NET

Quartz.NET, geliştiricilerin .NET uygulamalarında görevleri planlayıp yönetmelerini sağlayan sağlam bir açık kaynaklı görev zamanlama kütüphanesidir. Belirli aralıklarla işler çalıştırmanız, arka planda işlem yapmanız veya zaman tabanlı görevler yürütmeniz gerekiyorsa, Quartz.NET, kurumsal düzeyde zamanlama için en iyi çözümdür.

Quartz.NET'i yüklemek için NuGet paketini ekleyebilirsiniz:

Bir sonraki hyazıda görüşmek üzere...


Tags:
.NET Core Riok.Mapperly FluentValidation FluentResults Serilog Quartz.NET nesne eşleştirme doğrulama kuralları günlük kaydı görev zamanlama
info:
Category: .NET Core
Created on: 23.09.2024 22:35:36
Last View Date: 23.09.2024 22:35:36
Stats:
0 comments
16 views
3 likes

Comments: