Clean Architecture: Sürdürülebilir Proje Yapısı Nasıl Kurulur?

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16

Clean Architecture: Kodun Geleceğini Garanti Altına Almak​


Clean Architecture, yazılımın iş mantığını (Business Logic), dış dünyadan (veritabanı, arayüz, harici kütüphaneler) tamamen izole eden katmanlı bir yapıdır. Temel felsefesi: "Bağımlılıklar daima içe doğru olmalıdır."



1. Mimari Katmanlar ve Soğan (Onion) Yapısı​


Clean Architecture denince akla iç içe geçmiş halkalar gelir. En içteki halka en bağımsız olanıdır.


  • []Domain (Çekirdek): Uygulamanın kalbidir. Entity'ler, kural setleri ve interface'ler burada yer alır. Hiçbir kütüphaneye veya framework'e bağımlı değildir.
    []Application (Uygulama Mantığı): İş akışlarının (Use Cases) yönetildiği katmandır. DTO'lar, Mapper'lar ve servis arayüzleri buradadır.
    []Infrastructure (Altyapı): Veritabanı erişimi (EF Core, Dapper), e-posta gönderimi veya dosya depolama gibi dış dünya işlemlerinin gerçeklendiği yerdir.
    []Web API / UI (Sunum): Kullanıcının etkileşime girdiği katmandır. Sadece veriyi alır ve Application katmanına iletir.



2. Bağımlılık Kuralı (Dependency Rule)​


Clean Architecture'ın altın kuralı şudur: Dış halkalar, iç halkalardaki kodları bilebilir; ancak iç halkalar dışarıda neler olup bittiğinden tamamen habersizdir.

Örneğin; Domain katmanındaki bir nesne, onun bir SQL veritabanına mı yoksa bir Excel dosyasına mı kaydedileceğini bilmez. O sadece "kaydedilme" kuralını bilir. Gerçek kaydetme işlemini Infrastructure halleder.



3. Neden Clean Architecture Kullanmalıyız?​


AvantajAçıklama
Framework Bağımsızlığı.NET sürümü değişse veya başka bir araca geçilse bile iş mantığınız zarar görmez.
Test Edilebilirlikİş kuralları arayüzden ve veritabanından bağımsız olduğu için kolayca test edilebilir.
Veritabanı EsnekliğiSQL Server'dan MongoDB'ye geçmek sadece Infrastructure katmanını ilgilendirir.
SürdürülebilirlikYeni geliştiriciler projeye dahil olduğunda neyin nerede olduğunu kolayca anlar.



4. .NET Proje Klasör Yapısı Örneği​


Tipik bir Clean Architecture çözümünde şu projeleri görürsünüz:

Kod:
src/
├── MyProject.Domain/         (Entities, Exceptions, ValueObjects)
├── MyProject.Application/    (Interfaces, Mapping, UseCases, DTOs)
├── MyProject.Infrastructure/ (Persistence, Services, Logging)
└── MyProject.WebAPI/         (Controllers, Middleware, Program.cs)



Sonuç​


Clean Architecture, küçük bir "Hello World" projesi için fazla gelebilir (over-engineering). Ancak orta ve büyük ölçekli, uzun yıllar yaşaması planlanan projeler için bir can simididir. Bağımlılıkları doğru yönetmek, kodunuzun zamanın etkilerine karşı dirençli olmasını sağlar.
 
Geri
Üst