iToverDose/Yazılım· 13 MAYIS 2026 · 12:01

Claprec Mimarisi: N-Tier, Dağıtık Yapı ve Mikroservisler Detayı

Claprec’in arka uç mimarisi, C#’ın çoklu kalıtım sınırlamalarını aşan yenilikçi bir yaklaşımla şekillendirildi. N-Tier katmanlar ve bit düzeyinde kontrol hiyerarşisi nasıl çalışıyor?

DEV Community3 dk okuma0 Yorumlar

Claprec projesi, modern yazılım mimarilerinin en zorlu sorunlarından birini ele alıyor: karmaşık fonksiyonellikleri basit, bakımı kolay ve ölçeklenebilir bir şekilde nasıl tasarlayabiliriz? Projenin arka uç mimarisi, N-Tier katmanlarının yanı sıra, C# gibi dillerin çoklu kalıtım desteklememesi nedeniyle ortaya çıkan zorluklara yenilikçi çözümler sunuyor. Bu mimari, sadece Claprec’e özel olmakla kalmıyor; aynı zamanda C# projelerinde kod tekrarını en aza indirmek ve bakım yükünü azaltmak isteyen geliştiriciler için de önemli dersler barındırıyor.

Docker Konteynerlerinde Modüler Bir Yapı

Claprec’in sistem mimarisi, Docker konteynerleri üzerine inşa edilmiş altı ayrı bileşenden oluşuyor. Bu bileşenler, hem bağımsız çalışabilen hem de birbirleriyle senkronize şekilde hareket eden modüller olarak tasarlanmış. Sistemdeki temel bileşenler şunlar:

  • Üç arka uç mikroservisi: API, gerçek zamanlı işlemler ve görüntü işleme.
  • Angular tabanlı ön uç bileşeni.
  • Veritabanı olarak Microsoft SQL Server (MSSQL) ve mesajlaşma için RabbitMQ.

Her bir bileşen, kendi görevini en verimli şekilde yerine getirirken, sistem genelinde veri akışını ve hata yönetimini standartlaştırıyor. Bu yaklaşım, hem geliştirme hem de dağıtım aşamalarında esneklik sağlıyor.

N-Tier Mimarisi: Katmanlı Yapının Gücü

Claprec’in ana mikroservisi, N-Tier mimarisi temelinde geliştirilmiş. Bu mimari, her bir fonksiyonun karmaşıklığına göre farklı katman derinlikleri sunuyor. Temel amaç, Sorumluluk Ayrımı İlkesi ve DRY (Kendini Tekrar Etme) prensiplerine sıkı sıkıya bağlı kalarak, kodun daha okunabilir, test edilebilir ve yeniden kullanılabilir hale gelmesini sağlamak.

Mimaride üç farklı katman derinliği tanımlanmış:

  • Varlık Mutasyonları/CRUD (8 katman): En karmaşık CRUD işlemleri için kullanılan bu katmanlar, Daha Yüksek CRUD Denetleyicisi, Temel Daha Yüksek CRUD Denetleyicisi, Servis, Temel Daha Yüksek CRUD Servisi, Doğrulama, İş Kuralı, Temel Servis ve Depolama katmanlarından oluşuyor.
  • Veritabanı Depolanan Enum’lar (6 katman): Bu katmanlar, veritabanında saklanan enum değerlerinin yönetimi için optimize edilmiş. Veritabanı Enum Denetleyicisi, Temel Veritabanı Enum Denetleyicisi, Servis, Temel Veritabanı Enum Servisi, Temel Servis ve Depolama katmanlarından oluşuyor.
  • Genel Fonksiyonellik (4 katman): Daha basit işlemler için kullanılan bu katmanlar, Denetleyici, Servis, Temel Servis ve Depolama olarak sıralanıyor.

Bit Düzeyinde Kontrol Hiyerarşisi: Çoklu Kalıtımın Ötesi

C# gibi dillerde çoklu sınıf kalıtımının desteklenmemesi, geliştiricilerin ortak davranışları yeniden kullanmasını zorlaştırıyor. Claprec ekibi, bu sorunu Unix dosya izinlerinde kullanılan bit düzeyinde bayrak yaklaşımından esinlenerek çözmüş. Bu yöntem, CRUD operasyonlarını "Saf" taban denetleyiciler olarak sınıflandırıyor ve her birine özel bir bit değeri atıyor:

  • Seviye 0 (Temel Okuma): Sayfalama yapılmış liste ve tekil varlık getirme işlemleri için kullanılıyor.
  • Seviye 1 (Hesaplamalı Okuma): Temel okuma özelliklerine ek olarak, hesaplanmış özelliklere yönelik daha geniş uç noktalar sunuyor.
  • Seviye 2 (Silme): Temel okuma özelliklerine ek olarak, varlıkların var olup olmadığını kontrol eden silme işlemleri için kullanılıyor.
  • Seviye 4 (Oluşturma): Temel okuma özelliklerine ek olarak, doğrulama içeren oluşturma işlemleri için kullanılıyor.
  • Seviye 8 (Güncelleme): Temel okuma özelliklerine ek olarak, varlıkların var olup olmadığını kontrol eden ve doğrulama içeren güncelleme işlemleri için kullanılıyor.

Bu yaklaşım, hem kod tekrarını minimize ederken hem de her bir operasyonun bağımsız olarak genişletilebilmesini sağlıyor. Örneğin, sadece okuma işlemlerine ihtiyaç duyan bir modül, Seviye 0 ve Seviye 1 katmanlarını kullanabilirken, tam CRUD operasyonlarına sahip bir modül tüm seviyeleri bir arada kullanabiliyor.

Uygulama Örnekleri ve Kod Yapısı

Claprec’in mimarisini anlamak için, sistemdeki temel yapı taşlarını incelemek önemli. Örneğin, Seviye 0 denetleyicisi için kullanılan soyut sınıf aşağıdaki gibi tanımlanmış:

public abstract class Level0AbstractHigherCrudController<T, TDtoPlain, TDtoRelated, TPrimaryKey, TSearch>
    : AbstractBaseHigherCrudController, ILevel0AbstractHigherCrudController<TDtoPlain, TDtoRelated, TPrimaryKey, TSearch>
    where T : class
    where TDtoPlain : class
    where TDtoRelated : TDtoPlain
    where TSearch : BaseSearchDto
{
    private readonly ILevel0AbstractBaseHigherCrudService<T, TDtoPlain, TDtoRelated, TPrimaryKey, TSearch> _baseHigherCrudServiceLevel0;

    protected Level0AbstractHigherCrudController(
        ILevel0AbstractBaseHigherCrudService<T, TDtoPlain, TDtoRelated, TPrimaryKey, TSearch> baseHigherCrudServiceLevel0)
    {
        _baseHigherCrudServiceLevel0 = baseHigherCrudServiceLevel0;
    }

    [SwaggerOperation("Seviye 0", "Sayfalama yapılmıs liste al")]
    [HttpGet]
    [SwaggerResponse(StatusCodes.Status200OK)]
    [SwaggerResponse(StatusCodes.Status204NoContent)]
    public virtual async Task<ActionResult<PaginatedResponse<TDtoRelated>>> Get([FromQuery] TSearch search)
    {
        return await _baseHigherCrudServiceLevel0.GetPaginated(search, FormReqURLBuilder());
    }

    [SwaggerOperation("Seviye 0", "Tekil varlık al")]
    [HttpGet(GET_BY_ID_ROUTE)]
    [SwaggerResponse(StatusCodes.Status200OK)]
    [SwaggerResponse(StatusCodes.Status404NotFound, Type = typeof(DtoError))]
    public virtual async Task<ActionResult<TDtoRelated>> GetById(TPrimaryKey id)
    {
        return await _baseHigherCrudServiceLevel0.GetById(id);
    }
}

Benzer şekilde, Seviye 1 denetleyicisi, Seviye 0’dan türeyerek hesaplanmış özelliklere yönelik ek uç noktalar sunuyor. Bu katmanlı yaklaşım, hem kodun anlaşılabilirliğini artırıyor hem de yeni özelliklerin eklenmesini kolaylaştırıyor.

Gelecekteki Yol Haritası ve Mimari Deneyimleri

Claprec’in mimarisi, sadece teknik bir başarı öyküsü değil; aynı zamanda pratik sınırlamaların yaratıcı çözümlerle nasıl aşılabileceğine dair önemli bir örnek sunuyor. Proje, mimari seçimlerin uzun vadeli bakım ve ölçeklenebilirlik üzerindeki etkilerini gösterirken, geliştiricilere esneklik ve standartlaşma arasında denge kurmayı öğretiyor.

Gelecekte, Claprec’in mimarisinin daha da optimize edilmesi ve yeni teknolojilerle entegre edilmesi planlanıyor. Bu süreçte, ekip hem performans iyileştirmelerine hem de kod kalitesinin artırılmasına odaklanacak. Yapılan her tercih, projenin büyümesine ve daha karmaşık senaryolara hazır hale gelmesine katkı sağlayacak.

Yapay zeka özeti

Claprec’in C# tabanlı arka uç mimarisi, N-Tier katmanlar ve bit düzeyinde kontrol hiyerarşisiyle nasıl optimize edildi? Detaylı inceleme.

Yorumlar

00
YORUM BIRAK
ID #6UAAZF

0 / 1200 KARAKTER

İnsan doğrulaması

4 + 4 = ?

Editör onayı sonrası yayına girer

Moderasyon · Spam koruması aktif

Henüz onaylı yorum yok. İlk yorumu sen bırak.