Hangi .NET Framework’ünü Hangi Proje de Kullanmalıyım?

Bu yazımızda .NET ekosistemindeki popüler kütüphaneler arasında yer alan SignalR, NLog, Bogus, Serilog, Dapper ve diğer framworklerin kullanım örneklerini , amaçlarını ve hangi proje mimarilerinde kullanılabilir olduğunu göreceğiz. Bu çerçevelerin oluşturulmasındaki ve projelerde kullanılmasındaki amaçlardan birisi de sürdürülebilir bir kod tabanı oluşturmaktır. Şimdi bu kütüphaneler hakkında ayrıntılı bilgiler ve basit kullanım örneklerini inceleyelim.

İlgili Yazıya Git –> .NET Core ile RESTful API Geliştirme

1. SinyalR

SignalR, gerçek zamanlı uygulamaların dağıtımı için kullanılan bir .NET kütüphanesidir. WebSockets ve diğer taşıma yöntemlerini kullanarak, gösterim ve sunucu arasında iki yönlü iletişim sağlar. SignalR Canlı Sohbet veya Bildirim Sistemi proje türlerinin yapımında sıkça tercih edilir. Örneğin Bir e-ticaret sitesinde, ülkelerini destekleyen temsilcilerle gerçek zamanlı sohbet teşvikini sağlayan bir canlı sohbet sistemi olabilir veya hisse senedi platformunda, fiyatların aralıklı olarak bildirilmesi gibi uygulamalarda kullanılması uygundur.

Kullanım Şekli:

  1. NuGet paketi ekleyin:Microsoft.AspNetCore.SignalR
  2. SignalR Hub sınıfını aşağıdaki gibi oluşturun
public class ChatHub : Hub
{
    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}

3.Startup.cs dosyasına şunları ekleyin

app.UseEndpoints(endpoints =>
{
    endpoints.MapHub<ChatHub>("/chathub");
});

2. NLog

Loglama yapmak için kullanılan bir kütüphanedir. Dosyaya, veritabanına veya konsola log yazılabilir. Hata İzleme ve Loglama gibi ihtiyaçların olduğu projelerde sıkça kullanılır. Örnek olarakta Bankacılık uygulamaları olabilir çünkü tüm olayların izlenebilir şekilde kaydedilmesi gereksinimi vardır.

Kullanım Şekli:

  1. NuGet paketi ekleyin: NLogve NLog.Web.AspNetCore.
  2. nlog.configprogram oluşturup aşağıdaki gibi düzenle
<targets>
    <target name="logfile" xsi:type="File" fileName="log.txt" />
</targets>
<rules>
    <logger name="*" minlevel="Info" writeTo="logfile" />
</rules>

Aşağıdaki kodları ekle, üst kod blogunda tanımladığımız log.txt dosyasına loglama yapma işlemini aşağıdaki kod bloğu ile yapmaktadır.

var logger = LogManager.GetCurrentClassLogger();
logger.Info("Bu bir bilgilendirme mesajıdır");

İlgili Yazıya Git –> ASP.NET Core MVC Örneği

3. Bogus

Test verisi üretimi için kullanılır. Örneğin Bir CRM (Müşteri Yönetim Sistemi) projesi geliştirilirken, müşteri verileri gibi binlerce test kaydının otomatik işlemlerinin oluşturulmasında kullanılır. Ayrıca uygulamanın performans ölçümü için sahte kullanıcı hesapları da oluşturulur.

Kullanım Örneği:

  1. NuGet paketi ekleyin: Bogus. Test verisi olarak aşağıdaki gibi ad, soyad, yaş verilerini oluşturduk
var faker = new Faker<Person>()
    .RuleFor(p => p.FirstName, f => f.Name.FirstName())
    .RuleFor(p => p.LastName, f => f.Name.LastName())
    .RuleFor(p => p.Age, f => f.Random.Int(20, 60));
var person = faker.Generate();

4. Serilog

Yapılabilir ve genişletilebilir bir loglama kütüphanesidir. Loglama ve Analitik ile ilgili proje konularında kullanımı uygundur. Örneğin, bir IoT (Nesnelerin İnterneti) taşınabilir bilgilerden gelen kayıtları Azure veya Kibana gibi araçlara kaydedilmesi. Bir diğer örnek de e-ticaret sitesindeki kullanıcı davranışlarının analiz edilmesi olabilir.

Kullanım Şekli:

  1. NuGet paketi ekleyin: Serilogve Serilog.Sinks.Console.
Log.Logger = new LoggerConfiguration()
    .WriteTo.Console()
    .CreateLogger();
Log.Information("Bu loglama mesajıdır.");

5. Dapper

Mikro ORM ile Database işlemlerinde kullanılır. Örneğin, finansal raporlamada veya büyük SQL sorgularını optimize etmede Dapper kullanılır. Mikroservis mimarisinde basit CRUD işlemlerinde de Dapper kullanımı uygundur.

Kullanım Şekli: Database bağlantı sağladıktan sonra sorgumuzu çekmek.

  1. NuGet paketi ekleyin: Dapper.
using var connection = new SqlConnection(connectionString);
var users = connection.Query<User>("SELECT * FROM Users").ToList();

6. NodaTime

Tarih ve Saat Yönetimi uygulamalarında kullanılabilir. Örneğin Küresel bir uçak rezervasyon sistemi, farklı saat dilimlerindeki uçuşları doğru şekilde yönetmede bu çerçeveyi kullanabilir. Veya Bankacılık işlemlerinin hassas işlemlerde saniyeler önemli olduğu için NodaTime çerçevesi kullanılabilinir.

Kullanım Şekli:

  1. NuGet paketi ekleyin: NodaTime.
var now = SystemClock.Instance.GetCurrentInstant();
var zone = DateTimeZoneProviders.Tzdb["America/New_York"];
var zonedDateTime = now.InZone(zone);

7. Hangfire

Arka plan görevlerini (arka plan işleri) oluşturmak için kullanılır. Örneğin, E-posta gönderim hizmetlerinde, arka planda e-postaların zamanlanması ve dağıtımında kullanılabilinir. Yada bir blog sitesinde, günlük veri yedekleme işlemleri de olabilir.

Kullanım Şekli:

  1. NuGet paketi ekleyin: Hangfire.
  2. Startup.cs dosyasına ekle
services.AddHangfire(x => x.UseSqlServerStorage(connectionString));

Kod aşağıdaki gibidir

RecurringJob.AddOrUpdate(() => Console.WriteLine("Recurring Job"), Cron.Daily);

8. Polly

Hata yönetimi, yeniden deneme (yeniden deneme) ve dayanıklılık (esneklik) sağlamak için kullanılır. Proje örneği verecek olusak eğer, Bir ödeme döngüsü, API çağrılarında başarısızlık durumu belirli bir süre sonra yeniden deneme şeklinde ayarlayan sistem olabilir. Dağıtık sistemlerde kesintilere karşı dayanıklı servisler oluşturmada kullanılabilinir.

Kullanım Örneği:

  1. NuGet paketi ekleyin: Polly.
var policy = Policy.Handle<HttpRequestException>()
    .Retry(3);
policy.Execute(() => SomeHttpRequest());

9. Autofac

Dependency Injection (DI) için bir framework’tür. Mikroservis mimarisine sahip bir uygulamada birleştirme, ilişkilerin çeşitliliği ve test kolaylığı sağlamada kullanılabilinir. Örneğin, bir e-ticaret platformunda, sipariş yönetimi modülünün farklı servislerle entegre edilmesi olayı gibi.

Kullanım Şekli:

  1. NuGet paketi ekleyin: Autofac.
  2. Baslangic.cs dosyasına ekle
var builder = new ContainerBuilder();
builder.RegisterType<MyService>().As<IMyService>();

10. Swagger

API dokümantasyonu oluşturur. SaaS tabanlı hizmetlerde entegrasyon kolaylığı sağlar.

Kullanım Şekli:

  1. NuGet paketi ekleyin: Swashbuckle.AspNetCore.
  2. Startup.cs olay
services.AddSwaggerGen();
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"));

İlgili Yazıya Git –> Application Programming Interface (API) Nedir?

11. BenchMarkDotNet

Kod içeriğini ve karşılaştırmayı yapmak için kullanılan bir kütüphanedir. Kod çalıştırıldığında sonuç olarak yöntemlerin ne kadar hızlı olduğu gösterilir. Kısaca Kod Performansını Ölçer. Kullanım alanları Bir makine geliştirilirken veya uygulama, farklı güncellemelerin karşılaştırmasında kullanılabilinir. Diğer kullanım alanı da Büyük veri miktarının olduğu projeler olabilir, kodun dar boğazlarını belirlemesinde etkili olabilir.

Kullanım Şekli:

  1. NuGet paketi ekleyin: BenchmarkDotNet.
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;

public class BenchmarkTest
{
    [Benchmark]
    public void TestMethod()
    {
        // Test edilecek kod
        var result = Enumerable.Range(0, 1000).ToList();
    }
}

class Program
{
    static void Main(string[] args)
    {
        BenchmarkRunner.Run<BenchmarkTest>();
    }
}

12. AutoMapper

Nesne Dönüşümleri için kullanılır. Örneğin, Bir e-ticaret taşınabilir, DTO (Data Transfer Object) nesnelerinin veri tabanı modellerine dönüştürülmesi. Bu frameworkle Bir CMS’de (İçerik Yönetim Sistemi), kullanıcıdan gelen veriler kolayca işlenebilir.

Kullanım Şekli:

  1. NuGet paketi ekleyin: AutoMapper.
using AutoMapper;

public class Source
{
    public string Name { get; set; }
}

public class Destination
{
    public string Name { get; set; }
}

var config = new MapperConfiguration(cfg => cfg.CreateMap<Source, Destination>());
var mapper = config.CreateMapper();
var source = new Source { Name = "John" };
var destination = mapper.Map<Destination>(source);

13. MiniProfiler

Kod ve sorguların kullanıma sunulması için mini bir profil oluşturucudur. Performans İzleme nin gerektiği yerlerde kullanılır. Bir haber portalında, yavaş çalışan sorguları tespit etmede kullanılabilinir. Veya Mikroservis tabanlı sistemlerde API bakımının izlenmesinde de kullanılan çerçevedir.

Kullanım Şekli:

  1. NuGet paketi ekleyin: MiniProfiler.AspNetCore.
  2. Startup.cs dosyasına ekle
services.AddMiniProfiler(options => options.RouteBasePath = "/profiler");
app.UseMiniProfiler();

Kod

using (MiniProfiler.Current.Step("My Task"))
{
    // Profilenecek kod
}

14. Quartz

Zamanlanmış görevleri oluşturmak için kullanılan bir kütüphanedir. Kullanılacak proje türlerine örnek olarak, Bir stok yönetim işlemi, her gece stokun depolanmasının güncellenmesi zamanlanması olabilir ve E-posta hatırlatma sistemleri olabilir.

Kullanım Şekli:

  1. NuGet paketi ekleyin: Quartz.
IJobDetail job = JobBuilder.Create<SampleJob>()
    .WithIdentity("myJob", "group1")
    .Build();

ITrigger trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger", "group1")
    .StartNow()
    .WithSimpleSchedule(x => x.WithIntervalInSeconds(10).RepeatForever())
    .Build();

IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler();
await scheduler.Start();
await scheduler.ScheduleJob(job, trigger);
public class SampleJob : IJob
{
    public Task Execute(IJobExecutionContext context)
    {
        Console.WriteLine("Job is executing...");
        return Task.CompletedTask;
    }
}

15. NSubstitute

Testlerdeki ilişkileri (bağımlılıklar) sahte nesnelerle değiştirmek için kullanılır. Örneğin, Bir rezervasyon rezervasyonu, ödeme hizmetini test ederken gerçek API yerine sahte nesne kullanması. Veya Üretim ortamına zarar vermeden bağımlılıkları test etme.

Kullanım Şekli:

  1. NuGet paketi ekleyin: NSubstitute.
var service = Substitute.For<IMyService>();
service.GetData().Returns("Mocked Data");

var result = service.GetData(); // result = "Mocked Data"

16. Newtonsoft.Json

JSON işlemleri için kullanılan bir kütüphanedir. Kullanılacak proje örnekleri, Bir sosyal medyanın, API’den gelen JSON’un ayrıştırılması ve modele dönüştürülmesi. Veya herhangi bir yerden alınan verileri JSON biçiminde kaydedip saklama işlemleri bu Newtonsoft.JSON kütüphanesini kullanmada etkilidir.

Kullanım Şekli:

  1. NuGet paketi ekleyin: Newtonsoft.Json.
var obj = new { Name = "John", Age = 30 };
string json = JsonConvert.SerializeObject(obj);

var deserialized = JsonConvert.DeserializeObject<dynamic>(json);
Console.WriteLine(deserialized.Name);

17. MedyatR

Daha Fazla Bilgi İçin –> CQRS Design Pattern

CQRS (Komut ve Sorgu Sorumluluğu Ayrımı) tasarım desenini kolayca göstermek için kullanılır. Kullanım örneği olarak, Bir proje yönetim sürecinde, her görev oluşturma ayrıntılarının ayrıntıları için olay işleyicinin kullanılması örnek olarak verilebilir. Veya bir sipariş yönetim sistemi, siparişin parçalarının güncellenmesi de MedyatR kütüphanesi ile yapılabilir.

Kullanım Şekli:

  1. NuGet paketi ekleyin: MediatRve MediatR.Extensions.Microsoft.DependencyInjection.
  2. Komut ve İşleyiciyi tanımlayın
public class CreateOrderCommand : IRequest<string>
{
    public string ProductName { get; set; }
}

public class CreateOrderHandler : IRequestHandler<CreateOrderCommand, string>
{
    public Task<string> Handle(CreateOrderCommand request, CancellationToken cancellationToken)
    {
        return Task.FromResult($"Order created for {request.ProductName}");
    }
}

Kullanımı

var result = await mediator.Send(new CreateOrderCommand { ProductName = "Laptop" });

Bu sistemler modern yazılım projelerinde yaygın olarak kullanılır.


ExpoTekno sitesinden daha fazla şey keşfedin

Subscribe to get the latest posts sent to your email.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

English Translate »