Temiz Mimari .NET Core: Bilmeniz Gereken Her Şey
Üzeyir AYDIN
29 AraGeleneksel .NET uygulamaları genellikle tek bir birim olarak dağıtılır. Tüm bu uygulamalar aynı IIS uygulama alanında çalışır ve web uygulamaları olarak yürütülür. Yine de, iş uygulamalarını mantıksal olarak birkaç katmana ayırmak ve tek bir birimde dağıtmak önerilir.
Monolitik uygulamalar davranış açısından tamamen izoledir. İşlemleri gerçekleştirmek için diğer hizmetler ve veri depoları ile etkileşime girebilir. Ancak, çoğu uygulama tek bir paket olarak dağıtılır. Genellikle, uygulamalar katmanlara ayrılır ve bir katman diğerine bağımlıdır. Bir uygulamanın bölümleri arasında bağımlılıklar olduğunda, bir bölümü test etmek zor olabilir.
Temiz Mimari bu bağımlılık sorununa bir çözümdür. Genel mimarinin aksine, temiz mimari çerçevelere, kullanıcı arayüzlerine veya veri tabanlarına bağımlı değildir. Genel olarak bir uygulamada üç tür katman bulunur: Kullanıcı Arayüzü (UI) katmanı, İş Mantığı Katmanı (BLL) ve Veri Erişim Katmanı (DAL). Ancak temiz mimaride bu katmanlar Uygulama Çekirdeği, Altyapı ve UI olarak düzenlenir. Bir kullanıcı arayüzünü veya veri tabanını değiştirmek, sistemin geri kalanını değiştirmeden mümkündür.
.NET geliştirici ekibimiz, temiz mimarinin önemini anlamanıza yardımcı olacak bu makaleyi hazırladı. Bu mimariyi korumak, hatalı uygulama geliştirme ortamından kaynaklanan açıkları ortadan kaldırır. Başlangıç olarak, ASP.NET Core'daki farklı mimari türlerini inceleyelim ve ardından temiz mimariyi anlayalım.
1. ASP.NET Core’da Yaygın Mimariler
İyi bir mimariye sahip olmak, bir uygulama inşa etmenin anahtarıdır. Kod ayrımını sağlamak için farklı mimari türleri kullanılabilir ve bu genellikle uygulamayı katmanlara ayırarak yapılır.
ASP.NET Core’da iki temel mimari türü bulunur:
1.1 Geleneksel “N-Katmanlı” Mimari
- Katmanlar: UI, BLL (İş Mantığı Katmanı) ve DAL (Veri Erişim Katmanı) içerir.
- UI Katmanı: Kullanıcıların talepte bulunduğu katmandır.
- BLL: Kullanıcı isteklerini işler ve DAL’a bağımlıdır.
- DAL: Veri erişimi ile ilgili tüm detayları içerir ve veri tabanının varlığına bağımlıdır.
Bu mimarinin bir dezavantajı, derleme zamanı bağımlılıklarının yukarıdan aşağıya doğru çalışmasıdır. UI katmanı BLL’ye, BLL ise DAL’a bağımlıdır. Bu durum, uygulamanın en önemli iş mantığını içeren BLL’yi, veri erişim katmanına bağımlı hale getirir. Bu nedenle iş mantığını test etmek zordur ve genellikle bir test veri tabanı gerektirir. Bağımlılık tersine çevirme prensibi, bu soruna bir çözümdür.
1.2 Temiz Mimari
- Çekirdek Tasarım: Alan ve uygulama katmanları tasarımın merkezindedir.
- Bağımsızlık: Veri tabanı, UI katmanı, çerçeveler ve diğer dış bağımlılıklardan bağımsızdır.
- Avantajı: İş mantığı ve uygulama modeli tasarımın merkezine yerleştirilir.
- Ters Bağımlılık: Altyapı ve uygulama detayları, uygulama çekirdeğine bağımlıdır.
2. Temiz Mimari
Temiz Mimari, Robert C. Martin tarafından geliştirilmiş ve tanıtılmıştır. Bu mimari, iş mantığının veri erişimine bağımlı olması yerine uygulama çekirdeğini altyapı ve uygulama detaylarından sorumlu tutar. Uygulama çekirdeğinde, bu işlevselliği gerçekleştirmek için soyutlamalar veya arayüzler tanımlanabilir. Temiz mimaride çerçevelere bağımlılık yoktur ve test edilebilirlik yüksektir. Kullanıcı arayüzü veya veri tabanı gibi dış etmenlere bağımlı olmadan uygulama test edilebilir.
2.1 Temiz Mimarinin Avantajları
- Bağımsızlık: Veri tabanı, çerçeveler ve sunum katmanından bağımsızdır.
- Kolay Test Edilebilirlik: UI, web sunucusu veya veri tabanı olmadan iş kuralları test edilebilir.
- Esneklik: Kullanıcı arayüzü veya veri tabanı değiştirilse bile diğer sistemler etkilenmez.
- Yüksek Performans: Daha kaliteli kod geliştirme imkanı sunar.
2.2 Temiz Mimaride Katmanlar
- Merkez Katman: Alan veya altyapı katmanıdır.
- Uygulama Çekirdeği Katmanı: İş mantığı ve uygulama modeli burada yer alır.
- Dış Katman: Kullanıcı arayüzünü içerir.
3. .NET Core’da Temiz Mimari
ASP.NET Core’un yerleşik bağımlılık enjeksiyonu desteği, bu yapıyı ideal hale getirir. Uygulama çekirdeği altyapıya bağımlı olmadığından, otomatik birim testleri kolaylaşır. Bu yapı, uygulamanın modüler olarak tasarlanmasına olanak tanır ve monolitik yapılardan uzaklaşmayı sağlar.
- Uygulama Çekirdeği: İş mantığı, alan servisleri, arayüzler.
- Altyapı: Veri tabanı erişimi, API istemcileri, dış servisler.
- Kullanıcı Arayüzü: Kontroller, Razor sayfaları, ViewModel'ler.
Temiz Mimari, orta ve yüksek karmaşıklıktaki uygulamaların düzenli bir şekilde organize edilmesini sağlar. ASP.NET Core, doğru bir çözüm yapısıyla temiz mimari yöntemine mükemmel uyum sağlar. İş mantığını izole ederek, uygulamanın diğer katmanlardan bağımsız olmasını sağlar. Bu mimari, test edilebilir, sürdürülebilir ve dış bağımlılıklardan bağımsız bir yapı sunar.
Müşteri Girişi
Hesabınızı yönetmek için giriş yapın