Clean Architecture in .NET 10
Clean Architecture, yazılım geliştirmede endüstri standardı haline gelmiştir. Bu makale, modern .NET uygulamalarında Clean Architecture ilkelerini nasıl uygulayacağınızı detaylı olarak anlatıyor.
Neden Clean Architecture?
Clean Architecture, aşağıdaki avantajları sağlar:
- Bağımsızlık: İş mantığı, framework'ün spesifiklerinden bağımsızdır
- Test edilebilirlik: Katmanlar arasında net sınırlar, unit testing'i kolaylaştırır
- Bakım kolaylığı: Yeni özellikler eklemek ve hataları düzeltmek daha basit hale gelir
- Esneklik: Teknoloji değişiklikleri, iş mantığına etki etmez
Katmanlar
1. Domain Layer
Domain katmanı, iş mantığının kalbidir:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public void UpdatePrice(decimal newPrice)
{
if (newPrice < 0)
throw new ArgumentException("Fiyat negatif olamaz");
Price = newPrice;
}
}
2. Application Layer
Application katmanı, use case'leri tanımlar:
public class UpdateProductPriceCommand
{
public int ProductId { get; set; }
public decimal NewPrice { get; set; }
}
public class UpdateProductPriceCommandHandler
{
private readonly IProductRepository _repository;
public UpdateProductPriceCommandHandler(IProductRepository repository)
{
_repository = repository;
}
public async Task Handle(UpdateProductPriceCommand command)
{
var product = await _repository.GetByIdAsync(command.ProductId);
product.UpdatePrice(command.NewPrice);
await _repository.SaveAsync(product);
}
}
Best Practices
- Dependency Injection Kullanın: Tight coupling'i önlemek için DI container'ını kullanın
- Interface'ler Aracılığı ile Harita Çizin: Concrete implementasyonlara değil, abstractionlara bağımlı olun
- Repository Pattern: Data access logic'ini izole edin
- CQRS: Command ve Query'leri ayırın
Sonuç
Clean Architecture, uzun vadeli projelerde bakım kolaylığı ve esneklik sağlar. .NET 10 ile birlikte, daha da güçlü araçlara sahipsiniz.