COMPUTER ENGINEER

Örneklere git
Blog
Next.js / ASP.NET Core / SQL6 dk çalışma
20/ 41

Uygulama katmanı

Katmanlar: Domain, Application, Infrastructure

Bu projenin backend’i dört projeye ayrılmış. Neden ve bağımlılıklar hangi yöne akar?

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

Bu sitenin API’si dört projeden oluşur. Domain, iş kavramlarını (yazı, proje, mesaj) ve kurallarını içerir; hiçbir çerçeveye bağımlı değildir. Application, kullanım senaryolarını (yayımlanmış yazıyı getir, mesaj kaydet) ve onların ihtiyaç duyduğu arayüzleri tanımlar; dışarıya veri aktarım nesneleri (DTO) sunar. Infrastructure, bu arayüzlerin somut uygulamalarını içerir: EF Core DbContext’i, SQL sorguları, dosya depolama. Api ise HTTP’yi Application’a bağlayan en dış katmandır.

Bağımlılıklar içeri doğru akar: Api ve Infrastructure, Application’ı bilir; Application, Domain’i bilir; Domain kimseyi bilmez. Böylece iş kuralları veritabanı veya web çerçevesi değiştiğinde etkilenmez ve çerçeve olmadan test edilebilir.

Katmanlama bir amaç değil araçtır. Küçük bir projede dört katman gereksiz tören olabilir. Ama yönetim paneli, iki dilli içerik, önbellek ve güvenlik kuralları olan bir sistemde sorumlulukların nerede yaşadığını açıkça bilmek, değişiklikleri güvenli kılar.

NERESİNDE KULLANIRSIN?

Sorumlulukların net yeri, değişiklikleri küçük ve öngörülebilir tutar.

SIK YAPILAN HATA

Domain projesine EF Core veya ASP.NET Core referansı ekleyip iç katmanı çerçeveye bağlamak.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

Temsili örnek
backend/
  AtaberkSahin2.Domain/          Content.cs (varlıklar, kurallar)
  AtaberkSahin2.Application/     ContentContracts.cs, Queries/ (DTO, arayüzler)
  AtaberkSahin2.Infrastructure/  PortfolioDbContext.cs, ContentStore.cs
  AtaberkSahin2.Api/             Controllers/, Middleware/, Program.cs

Bu projenin gerçek klasör yapısı.

Bu sayfa gerçek bir sunucuya veya veritabanına bağlanmaz. Kod örnekleri .NET 8, Next.js ve SQL Server için temsilîdir; süreler simülasyondaki örnek değerlerdir, ölçüm değildir. Örnekleri yalnız kendi geliştirme ortamında dene; gerçek bağlantı dizesi, token veya parola paylaşma.

02 / SIRA SENDE

Önce kendin dene.

Yazı yayımlanırken ‘başlık boş olamaz ve yayın tarihi gelecekte olamaz’ kuralı var. Bu kural hangi katmanda yaşamalı?

Çözümü ve açıklamasını göster
Açıklamalı çözüm
Domain (veya Application’daki kullanım senaryosu).
Controller yalnız girdiyi alır; kural, HTTP’den bağımsız
bir yerde olmalı ki yönetim paneli, içe aktarma veya arka plan işi aynı kuralı kullansın.

İş kuralı en iç katmana yakın yaşar. Böylece hangi kanaldan gelirse gelsin aynı kural uygulanır.