2020 Yılı için Katmanlı Mimari Önerisi


.NET Core 3.1 ile proje hazırlayanlar için Katmanlı Mimari konusunda söyleyeceğim yeni şeyler var.

Öncelikle Angular’da SSR konusu gerçekten ciddi bir problem. SSR özelliği sanıldığı kadar başarılı çalışmıyor. Bu nedenle web sitelerimizde MVC kullanmaya devam etmemiz gerekebiliyor.

Ancak yönetim panelini Angular yapabiliriz.

Bu durumda katmanları şöyle tasarlayabilirsiniz.

  1. ÇözümAdı.Model Katmanı
    Model katmanı Entity’leri ve Enum’ları içerir. Entity’lerde DataAnnotation’lar kullanılmaz.
  2. ÇözümAdı.Data Katmanı
    DbContext’lerimiz burada bulunur. Fluent-API’ler (Builder’lar) ve Migration’lar da yine burada bulunur. Generic BaseRepository sınıfımız ve UnitOfWork sınıfımız da interface’leriyle birlikte bulunur. İstenirse her entity için ayrı repository’ler de ilave edilebilir.Üyelik ve kişisel veriler için ayrı SQL Server kullanan ApplicationDbContext diğer veriler için ise ÇözümAdıDbContext şeklinde iki adet context kullanmanızı güvenlik için öneriyorum. ÇözümAdıDbContext veritabanında üyenin id’sini tutabilir ve iki veritabanı arasında herhangi bir ilişki bulundurmazsınız. ApplicationDbContext veritabanında kişisel verileri post-kuantum algoritmalarla şifreleyerek tutmayı unutmayınız.
  3. ÇözümAdı.Service Katmanı
    Servislerimizi CQRS paterni ile hazırlarız. Bu bağlamda Command’lar ve CommandHandler burada bulunur. Common Result Object’imiz de Query sınıflarımız da burada bulunur. Validation’ları CommandHandler’lar da yaparız.
  4. ÇözümAdı.Infrastructure Katmanı
    Mail gönderme, dosya işlemleri, Azure entegrasyonları için gerekli sınıflarımızı bu katmana ekleyebiliriz. Cutting-Edge katmanı olarak ta bilinen bu katmanda her katmanda ihtiyaç duyulabilecek sıradışı işleri yapıyoruz.
  5. ÇözümAdı.Web Katmanı
    Kök dizinde bir MVC web sitesi yer alır. Admin areasında ise Angular yönetim paneli bulunur. Generic servis katmanımızı kullanan bir Web API denetleyicimiz ve JWT üyelik işlemleri için bir Token denetleyicimiz de yine bu katmandadır.MVC proje doğrudan Service katmanını kullanabilir. Web API’den de yararlanabilir. Angular proje ise Token ve generic servis Web API denetleyicisini kullanır.

    Not: Angular yönetim panelini ayrı bir katman olarak ta tasarlayabilirsiniz. Ancak ben burada MVC proje altında yapma sebebim, tek bir web yayını ile hem MVC, hem Web API hem de Angular yayınlamasını birlikte yaparak hosting masraflarını düşürmektir. Ancak isteyenler bu üç görevi ayırmayı tercih edebilirler. Özellikle Angular katmanını ayrı yapmak tercih edilebiliyor.

  6. ÇözümAdı.Tests Katmanı
    NUnit ile birim testleri yapabileceğimiz katman. Selenium testleri de bu katmanda yazılabilir.
  7. ÇözümAdı.Mobile Katmanı
    Flutter veya Ionic gibi frameworklerle hazırladığımız mobil uygulamamız bu katmanda bulunur. Mobil uygulama web katmanındaki Token ve Generic servis Web API’lerini kullanır.

KVKK ve Kişisel Verileri Koruma Konusunda Öneriler

  1. Kişisel Veriler ve üyelik için .NET Core Identity kullanmanız tavsiye edilir ve bu kısım için ayrı ve özel bir SQL Server kullanmanız ve projenin kalan kısmını da ayrı genel bir veritabanında tutmanız önerilir.
  2. Kişisel Verileri post-kuantum algoritmalarla şifreleyerek veritabanına kaydetmelidir.
  3. ISO 27001 bilgi güvenliğine dikkat edilmeli ve ofiste hiçbir kişisel telefon ve kişisel bilgisayarın Wi-Fi’yi hackleyememesi için ofiste Wi-Fi kullanılmasını önermiyorum. Sadece misafirler için tamamen ayrı bir network ile Wi-Fi sağlanabilir, ancak ofis çalışanları sadece özel olarak korunan kablolu networkü kullanmalılar.
  4. Yabancı cihazlar ofis bilgisayarlarına ve networküne kesinlikle bağlanamamalıdırlar.
Reklam

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s