ABP Framework ile Ad?m Ad?m Yaz?l?m Geli?tirme ? B?l?m 2: Proje Mimarisini Anlama

Admin 

ABP Framework, modern ve s?rd?r?lebilir uygulamalar geli?tirmek i?in katmanl? mimari ve mod?ler tasar?m prensiplerini benimser. Bu b?l?m, ABP’nin temel mimari yap?s?n? ve bile?enlerin birbirleriyle nas?l etkile?ime girdi?ini detayl? bir ?ekilde a??klayacakt?r.

ABP’nin Katmanl? Mimarisi

ABP, yaz?l?m geli?tirme pratiklerindeki “ayr???m” (separation of concerns) ilkesine uygun olarak, her biri belirli bir sorumlulu?u ?stlenen katmanlara ayr?lm??t?r:

  • Domain Layer (Domain, Domain.Shared): Uygulaman?n temel i? kurallar?n?, varl?klar?n? (entities), de?er nesnelerini (value objects), domain servislerini ve spesifikasyonlar?n? bar?nd?r?r. Domain.Shared projesi, hem sunucu hem de istemci taraf?nda kullan?lacak DTO’lar, sabitler ve enum’lar gibi payla??lan tipleri i?erir. Bu katman, di?er t?m katmanlar?n ba??ml? oldu?u ?ekirdek katmand?r.
  • Application Layer (Application, Application.Contracts): Domain katman?ndaki i?levleri kullanarak kullan?c? hikayelerini (use cases) ve uygulama i? mant???n? uygular. Genellikle Application Services ad? verilen s?n?flar arac?l???yla CRUD (Create, Read, Update, Delete) operasyonlar?n? ve domain operasyonlar?n? d?zenler. Application.Contracts projesi, uygulama servislerinin aray?zlerini ve bu servisler aras?nda veri transferi i?in kullan?lan DTO (Data Transfer Object)‘lar? tan?mlar. Bu sayede, sunum katman? ile uygulama katman? aras?ndaki ba??ml?l?k azal?r.
  • Infrastructure Layer (EntityFrameworkCore, MongoDb, Redis vb.): Uygulaman?n d?? kaynaklarla (veritaban?, dosya sistemi, d?? API’ler vb.) etkile?imini y?neten katmand?r. ABP, varsay?lan olarak Entity Framework Core entegrasyonu sunar (.EntityFrameworkCore projesi). Bu katman, repository implementasyonlar?n?, DbContext yap?land?rmalar?n? ve d?? servis entegrasyonlar?n? i?erir.
  • Presentation Layer (Web, HttpApi, HttpApi.Client, Blazor, Angular vb.): Kullan?c? aray?z?n? (UI) veya harici API’leri temsil eden katmand?r. Kullan?c?dan gelen istekleri al?r, uygulama katman?na iletir ve sonu?lar? kullan?c?ya sunar.
    • Web: ASP.NET Core MVC/Razor Pages tabanl? web uygulamalar? i?in.
    • HttpApi: RESTful API’ler i?in (genellikle mobil uygulamalar veya tek sayfa uygulamalar i?in).
    • HttpApi.Client: HttpApi katman?ndaki servisleri t?ketmek i?in kullan?lan proxy s?n?flar?n? i?erir.

Mod?ler Yap? ve Mod?llerin Birbirleriyle ?leti?imi

ABP Framework, g??l? bir mod?ler yap?ya sahiptir. Her bir proje, kendi i?inde ba??ms?z bir mod?l olarak kabul edilebilir ve AbpModule s?n?f?ndan t?reyen bir s?n?f ile temsil edilir. Mod?ller, [DependsOn(...)] niteli?i kullan?larak birbirlerine ba??ml?l?klar?n? bildirir. Bu, ba??ml? mod?llerin servislerinin otomatik olarak kaydedilmesini ve do?ru s?rada ba?lat?lmas?n? sa?lar.

Mod?ller aras? ileti?im, genellikle Application.Contracts katman?nda tan?mlanan DTO’lar ve aray?zler arac?l???yla ger?ekle?ir. Ayr?ca Event Bus (Bkz. B?l?m 11) mekanizmas? ile mod?ller gev?ek bir ?ekilde ileti?im kurabilir.

Dependency Injection (Ba??ml?l?k Enjeksiyonu) Yap?s?

ABP Framework, .NET Core’un yerle?ik ba??ml?l?k enjeksiyonu (DI) sistemini temel al?r ve genellikle Autofac gibi geli?mi? DI konteynerleriyle entegre ?al???r. Framework, servislerin ya?am d?ng?s?n? (singleton, scoped, transient) y?netir ve ba??ml?l?klar?n otomatik olarak ??z?lmesini sa?lar.

  • [Dependency(ReplaceServices = true)] gibi nitelikler veya AbpModule i?indeki ConfigureServices metodu ile servislerin ya?am d?ng?s? ve implementasyonlar? kolayca yap?land?r?labilir.
  • ITransientDependency, IScopedDependency, ISingletonDependency aray?zlerini implemente ederek s?n?flar?n?z? otomatik olarak ilgili ya?am d?ng?s? ile DI konteynerine kaydedebilirsiniz.

AutoMapper Entegrasyonu

ABP, AutoMapper k?t?phanesini kullanarak DTO’lar ile Entity’ler aras?nda kolayca d?n???m yapmay? sa?lar. Bu, ?zellikle uygulama servislerinde veri transferini basitle?tirir ve manuel d?n???m kodunu azalt?r. Profile s?n?flar? olu?turularak entity-DTO e?le?tirmeleri tan?mlan?r.

Domain-Driven Design (DDD) Prensiplerinin Uygulanmas?

ABP Framework, ba?tan sona Domain-Driven Design (DDD) prensiplerini benimser. Bu, i? mant???n?n (domain logic) a??k?a tan?mlanm?? bir “domain” katman?nda merkezile?mesini te?vik eder. Temel DDD kavramlar? ABP’de ?u ?ekillerde uygulan?r:

  • Entities (Varl?klar): Kimli?i olan ve ya?am d?ng?s? boyunca de?i?ebilen nesneler.
  • Aggregate Roots (Topluluk K?kleri): Bir grup varl???n tutarl?l???n? sa?layan ana varl?k.
  • Value Objects (De?er Nesneleri): Kimli?i olmayan, sadece de?erleri ile tan?mlanan nesneler (?rn. adres, para birimi).
  • Domain Services (Domain Servisleri): Birden fazla varl??? veya de?eri i?eren i? mant??? i?in kullan?l?r.
  • Repositories (Depolar): Domain katman?nda tan?mlanan varl?klara eri?imi soyutlar.

Bu katmanl? ve mod?ler yap?, uygulaman?z?n daha okunabilir, s?rd?r?lebilir, test edilebilir ve ?l?eklenebilir olmas?n? sa?lar.

Recommended Posts

Bilgi G?venli?i

Sosyal M?hendislik

” Bir bilgisayar sistemini hacklemek zor olabilir. Ama bir insan? kand?rmak ?o?u zaman ?ok daha kolayd?r. “ ??te sosyal m?hendislik tam olarak burada devreye girer. G?n?m?zde bir?ok siber sald?r?, karma??k yaz?l?mlardan ?ok insan psikolojisini hedef al?r. ??nk? en g??l? g?venlik sistemleri bile, yanl?? ki?iye verilen tek bir ?ifreyle etkisiz hale gelebilir. Sosyal m?hendislik; insanlar?n g?ven, […]

Admin 

ABP Framework ile Ad?m Ad?m Yaz?l?m Geli?tirme ? B?l?m 7: Kullan?c? Aray?z? Geli?tirme

Uygulaman?n kullan?c?larla etkile?im kurdu?u katman olan Kullan?c? Aray?z? (UI) Katman?, genellikle ASP.NET Core MVC (Razor Pages), Angular veya Blazor gibi teknolojilerle geli?tirilir. ABP Framework, se?ti?iniz UI teknolojisiyle sorunsuz entegrasyon sa?layarak geli?tirme s?recinizi h?zland?r?r ve ortak UI ihtiya?lar?n? kar??lar. Bu b?l?mde, ABP ile kullan?c? aray?z? geli?tirmenin temel y?nlerini ele alaca??z. Se?ilen UI Teknolojisine G?re Temel Yap?land?rma […]

Admin 

ABP Framework ile Ad?m Ad?m Yaz?l?m Geli?tirme ? B?l?m?6: API Katman? Geli?tirme

Modern uygulamalarda API (Application Programming Interface) katman?, hem istemci uygulamalar (mobil, web) hem de di?er servislerle ileti?im kurmak i?in kritik ?neme sahiptir. ABP Framework, g??l? ve kolay yap?land?r?labilir bir API katman? olu?turman?z? sa?lar. Bu b?l?mde, ABP’nin API geli?tirme ?zelliklerini ve en iyi pratikleri inceleyece?iz. Auto API Controller ?zellikleri ABP Framework’?n en kullan??l? ?zelliklerinden biri Auto […]

Admin 

Leave A Comment