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:
- NuGet paketi ekleyin:
Microsoft.AspNetCore.SignalR
- 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:
- NuGet paketi ekleyin:
NLog
veNLog.Web.AspNetCore
. nlog.config
program 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:
- 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:
- NuGet paketi ekleyin:
Serilog
veSerilog.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.
- 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:
- 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:
- NuGet paketi ekleyin:
Hangfire
. - 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:
- 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:
- NuGet paketi ekleyin:
Autofac
. - 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:
- NuGet paketi ekleyin:
Swashbuckle.AspNetCore
. - 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:
- 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:
- 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:
- NuGet paketi ekleyin:
MiniProfiler.AspNetCore
. - 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:
- 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:
- 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:
- 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:
- NuGet paketi ekleyin:
MediatR
veMediatR.Extensions.Microsoft.DependencyInjection
. - 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.