ASP.NET Core projelerinde uygulama büyüdükçe ortaya çıkan karmaşıklıklarla başa çıkmak her geliştiricinin karşılaştığı bir zorluktur. Yeni özellikler eklemek zorlaşır, hata ayıklamak uzun sürer ve bir modülde yapılan basit bir değişiklik diğer sistemleri beklenmedik şekilde etkileyebilir.
İşte tam da bu noktada Temiz Mimari (Clean Architecture) devreye giriyor. Bu yaklaşıma göre, uygulamanızın her katmanının belirli bir sorumluluğu olmalı ve bu katmanlar arasındaki bağımlılıklar tek yönlü olmalıdır. Böylece iş mantığınızı doğrudan Entity Framework Core veya ASP.NET Core'a bağlamak yerine, bağımsız bir şekilde geliştirip test edebilirsiniz.
Temiz Mimarinin Temel İlkesi
Temiz Mimarinin temelinde, uygulamanızı bağımsız katmanlara ayırma ve her katmanın tek bir sorumluluğa sahip olması yatar. Bu yaklaşım sayesinde:
- İş kurallarınız framework bağımlılıklarından arınmış olur
- Katmanlar arasındaki bağımlılıklar merkeze doğru yönelir
- Kodunuz daha esnek ve değiştirilebilir hale gelir
Bu mimari modelinde en önemli kural, dış katmanların iç katmanlara bağımlı olmasıdır. Yani API katmanı, Uygulama katmanına; Uygulama katmanı ise İş Katmanına bağımlıdır. Bu sayede, örneğin veritabanı değişse bile iş kurallarınız etkilenmez.
Tipik Proje Yapısı ve Katmanları
Temiz Mimaride tipik bir ASP.NET Core projesi aşağıdaki gibi organize edilir:
ÇözümAdı
├── Domain (İş Katmanı)
├── Application (Uygulama Katmanı)
├── Infrastructure (Altyapı Katmanı)
└── API (Sunucu Katmanı)Her katmanın açık bir sorumluluğu vardır ve framework bağımlılıklarından mümkün olduğunca arınmıştır.
Domain (İş) Katmanı
Bu katmanda yer alan bileşenler:
- Varlıklar (Entities): Veritabanı tablolarını temsil eden modeller
- Sıralamalar (Enums): Sabit değerleri temsil eden türler
- İş kuralları (Business Rules): Uygulamanın temel iş mantığını içeren kurallar
Önemli nokta: Bu katmanda hiçbir framework bağımlılığı bulunmaz. Ne Entity Framework, ne de ASP.NET Core burada yer almaz.
Application (Uygulama) Katmanı
Bu katmanda yer alan bileşenler:
- Kullanım senaryoları (Use Cases): Uygulamanın ana fonksiyonlarını temsil eder
- Veri aktarım nesneleri (DTOs): Dış dünyaya veri aktarımında kullanılan modeller
- Arabirimler (Interfaces): Altyapı katmanı tarafından uygulanacak sözleşmeler
- Doğrulama (Validation): Giriş verilerinin doğrulanması
- CQRS (Komut Sorgu Sorumluluğu Ayrımı): Okuma ve yazma işlemlerinin ayrıştırılması
Bu katman, tüm iş mantığının yer aldığı yerdir ve bağımsız olarak test edilebilir.
Infrastructure (Altyapı) Katmanı
Bu katmanda yer alan bileşenler:
- Entity Framework Core: Veritabanı erişimi
- SQL Server: Veritabanı sistemi
- Kimlik doğrulama (Identity): Kullanıcı yönetimi
- Dış API'ler: Harici servislerle iletişim
- E-posta hizmetleri: Bildirim sistemleri
Bu katman, Application katmanında tanımlanan arabirimleri uygular ve framework bağımlılıklarını içerir.
API (Sunucu) Katmanı
Bu katmanda yer alan bileşenler:
- HTTP istekleri: Kontroller tarafından işlenir
- Kimlik doğrulama: Middleware tarafından yönetilir
- Bağımlılık enjeksiyonu: Hizmetlerin yönetimi
Kontrollerin sorumluluğu sadece HTTP isteklerinin koordinasyonudur. İş mantığı burada değil, Application katmanında yer alır.
Neden Temiz Mimarinin Önemi Artıyor?
Temiz Mimarinin sağladığı temel avantajlar şunlardır:
- Veritabanı değiştirme kolaylığı: Altyapı katmanı değişse bile iş kuralları etkilenmez
- Yeni özellikler ekleme kolaylığı: Katmanlar arasındaki bağımsızlık sayesinde sistem genişletilebilir
- Birim testlerinin kolaylığı: İş kurallarını bağımsız olarak test edebilirsiniz
- Bağımlılıkların azaltılması: Katmanlar arasındaki gevşek bağlar kodun bakımını kolaylaştırır
- Okunabilirlik ve anlaşılabilirlik: Her katmanın net bir sorumluluğu vardır
Uygulama Örneği: Sipariş Yönetim Sistemi
Diyelim ki bir sipariş yönetim sistemi geliştiriyorsunuz. Temiz Mimarinin uygulanmadan önceki durumunda:
Kontrolcü → DbContextBu yapıda, kontrolcü doğrudan veritabanı erişimi sağlar ve iş mantığıyla birlikte bulunur. Bu durumda, iş kurallarını değiştirmek için veritabanı yapısını da değiştirmeniz gerekir.
Temiz Mimaride ise aynı sistemi şu şekilde organize edersiniz:
Kontrolcü → Uygulama Servisi → Depo Arabirimi → Altyapı → VeritabanıBu yapıda, kontrolcü hiçbir zaman doğrudan Entity Framework ile etkileşime girmez. Tüm iş mantığı Application katmanında yer alır ve Altyapı katmanı bu mantığı uygular.
Uygulama İçin Pratik Öneriler
Temiz Mimarinin en iyi şekilde uygulanabilmesi için izlenmesi gereken bazı pratikler:
- Kontrollerde iş mantığı yerine koordinasyon görevini verin
- Dış bağımlılıklar için arabirimler kullanın ve bunları enjekte edin
- Giriş verilerini işleme başlamadan önce doğrulayın
- Varlıklar yerine veri aktarım nesneleri (DTO) kullanarak dış dünyaya veri aktarın
- Bağımlılık enjeksiyonunu tutarlı bir şekilde uygulayın
Sonuç: Geleceğe Yatırım Yapın
Temiz Mimarinin amacı sadece daha fazla klasör oluşturmak değil, büyüyen projelerinizin anlaşılır ve bakımı kolay kalmasını sağlamaktır. ASP.NET Core geliştiriciliğinde ilerlemek istiyorsanız, Temiz Mimarinin temellerini öğrenmek en değerli yatırımlardan biri olacaktır.
Unutmayın: İyi tasarlanmış bir mimari, proje büyüdükçe kodunuzun da büyümesini sağlar. Bugün ayırdığınız zaman, gelecekteki bakım maliyetlerinizi önemli ölçüde azaltacaktır.
Yapay zeka özeti
ASP.NET Core projelerinizde Temiz Mimari kullanarak kod kalitesini artırın. Katmanlar arası bağımsızlık, bakım kolaylığı ve geleceğe hazır sistemler oluşturun.