post-thumb

Çok katmanlı mimari (N-layered architecture), genellikle büyük ve ölçeklenebilir projelerde kullanılan bir tasarım yaklaşımıdır. C# ASP.NET Core ve Java gibi teknolojilerde bu mimariyi uygularken dikkate almanız gereken bazı temel katmanlar vardır. Her ne kadar her projenin ihtiyaçları farklı olsa da, genel bir yaklaşım şu katmanları içerir:

  1. Presentation Layer (Sunum Katmanı):

    • Adı: Web, API, Mobil Uygulama gibi projenin kullanıcıya arayüz sunduğu katmandır.
    • Görevi: Kullanıcıdan gelen talepleri işlemek, iş mantığını çağırmak ve sonuçları kullanıcıya göstermek.
  2. Application Layer (Uygulama Katmanı):

    • Adı: Services, Application, ya da App gibi isimlerle adlandırılabilir.
    • Görevi: Kullanıcı taleplerini işlemek, iş mantığını uygulamak ve veri katmanına isteklerde bulunmak. Bu katman genellikle iş servisleri ve uygulama servislerini içerir.
  3. Domain Layer (Domain Katmanı):

    • Adı: Domain, Model ya da Entities gibi isimlendirilebilir.
    • Görevi: Uygulamanın iş mantığını ve varlık (entity) modellerini içerir. Bu katman genellikle veriye erişim ve iş mantığı ile ilgili temel kuralları içerir.
  4. Infrastructure Layer (Altyapı Katmanı):

    • Adı: Infrastructure, Data, ya da Persistence gibi isimler kullanılabilir.
    • Görevi: Veritabanı erişimi, dış servis entegrasyonları, dosya işlemleri gibi alt yapısal işlemleri gerçekleştirir.
  5. Cross-Cutting Concerns (Kesişen İlgiler):

    • Adı: CrossCutting, Common ya da Utilities gibi genel bir isim kullanılabilir.
    • Görevi: Günlük tutma, hata takibi, yetkilendirme gibi uygulama genelinde kesişen işlevleri içerir.
  6. Test Layer (Test Katmanı):

    • Adı: Test, Tests, ya da Testing gibi isimlerle adlandırılabilir.
    • Görevi: Birim testleri, entegrasyon testleri ve sistem testlerini içerir.
  7. UI Model Layer (UI Modelleri Katmanı):

    • Adı: UIModels, DTOs gibi isimler kullanılabilir.
    • Görevi: Kullanıcı arayüzü ile iletişimde kullanılan veri transfer nesnelerini (DTO) içerir.

Bu katmanları tasarlarken dikkate almanız gereken temel prensipler şunlardır:

    • İnce Taneli Mimarilik (Thin Vertical Slices): Her katmanın belirli bir sorumluluğu olmalı ve bu sorumluluklar mümkün olduğunca ince olmalıdır. Yani her katman, sadece kendi işlevselliği ile ilgili olmalıdır.

    • Bağımsızlık (Independence): Her katman birbirinden bağımsız olmalıdır. Örneğin, sunum katmanının, uygulama katmanının iç detaylarına erişmemesi gerekmelidir.

    • Tek Sorumluluk İlkesi (Single Responsibility Principle): Her bir katman ve sınıf, yalnızca bir görevi yerine getirmelidir.

    • Güçlü Tip Güvenliği (Strong Typing): Veri transferi için kullanılan nesneler güçlü bir şekilde tip güvencesine sahip olmalıdır. Bu genellikle DTO'lar için geçerlidir.

Ayrıca, Entity ve DTO isimlendirmesi genellikle kullanılan dil ve projenin özelliklerine bağlıdır. Ancak genel olarak, Entity ismi genellikle veritabanı tablolarını temsil eden nesneler için kullanılırken, DTO ismi veri transferi amacıyla kullanılan nesneler için tercih edilebilir.