Framework
Framework, yazılım uygulamaları geliştirmek için temel sağlar. Geliştiriciler, web siteleri ve uygulamalar oluşturmak için bir çerçeveyi şablon olarak kullanır. Profesyoneller buna bir kod ekleyerek ve sonra onu kendi özel amaçları için kişiselleştirerek yaparlar. Bir framework, projeye özgü bir paket oluşturmak için bir görüntü veya belge dosyası gibi birden çok kaynağı birleştirebilir.
ABP Framework
Açık kaynak web uygulama çerçevesidir. Sürdürülebilir kod yazmayı ve modern web uygulamaları oluşturmayı amaçlar. Bir çok şablonu ve paketleri projemize kolaylıkla entegre edebiliriz. Authorization, Unit of work gibi işlemleri otomatikleştirerek zamandan kazanmamızı sağlar. docs.abp.io (VT) giderek framework'e ait bütün detayları öğrenebiliriz. Ayrıca abpframework organizasyonunda abp repository'si altında bütün kaynak koda erişebilirsiniz. github.com/abpframework/abp (VT)
ABP CLI
ABP Framework sorunlarının çözümü için kullanılan komut satırı aracıdır. Şablona göre proje oluşturma, ABP paketlerini güncelleme, paket/modül ekleme ve istemci için proxy oluşturma/silme gibi işlemleri yapmamızı sağlar.
ABP CLI Kurulum
İlk olarak ABP CLI kurulumuna başlamadan önce dotnet' i indirmemiz gerekmekte. Aşağıdaki linklerden sisteminize uygun olanı seçin ve dotnet' i bilgisayarınıza kurun;
Sisteminize uygun kurulum dosyasını indirdikten sonra karşınıza gelen seçenekte "Yükle" butonuna tıklayın ve indirme işleminin tamamlanmasını bekleyin.
Yükleme işlemi tamamlandıktan sonra "kapat" a basın ve cmd' yi açıp "dotnet" yazın.
Eğer dotnet parametreleri çıkıyorsa, kurulum başarıyla tamamlanmıştır. Şimdi abp cli kurulumuna geçebiliriz. İndirmek için kullanacağımız komut "dotnet tool install -g Volo.Abp.Cli"
Gördüğünüz gibi ABP CLI başarıyla indirildi.
Proje Oluşturma
Proje oluşturmak için "new" komutunu kullanacağız. Gerekli parametreler aşağıda yer almaktadır;
Yükleme işlemi tamamlandıktan sonra "kapat" a basın ve cmd' yi açıp "dotnet" yazın.
Eğer dotnet parametreleri çıkıyorsa, kurulum başarıyla tamamlanmıştır. Şimdi abp cli kurulumuna geçebiliriz. İndirmek için kullanacağımız komut "dotnet tool install -g Volo.Abp.Cli"
Gördüğünüz gibi ABP CLI başarıyla indirildi.
Proje oluşturmak için "new" komutunu kullanacağız. Gerekli parametreler aşağıda yer almaktadır;
Parametre | Açıklaması |
|---|---|
--template veya -t | Proje şablonu belirlenir. |
--output-folder veya -of | Oluşturulacak projenin dosya yolu seçilir. |
--version veya -v | ABP versiyonu seçilir. |
--create-solution-folder veya -csf | Proje dosyalarını klasör altında oluşturur. |
--connection-string veya -cs | Veritabanı bağlantısı verilir. |
--database-management-system veya --dbms | Veritabanı yönetim sistemi seçilir. |
--local-framework-ref --abp-path | ABP paketlerini yerel bilgisayarımızdan debug edebilecek şekilde referans verir. |
Gördüğünüz gibi "abp new ABP_Ilk_Proje -u none -v 5.2.0 -csf -dbms MySQL" yazarak proje klasörümüzü oluşturduk. aspnet-core klasörünün altında solution dosyamız oluştu. "ABP_Ilk_Prohe.sln"
Paket güncelleme için "update" komutunu kullanacağız. Gerekli parametreler aşağıda verilmiştir;
Parametre | Açıklaması |
|---|---|
--npm | Sadece npm paketleri güncellenir. |
--nuget | Sadece NuGet paketleri güncellenir. |
--solution-path veya -sp | Çözüm dosyası yolu seçilir. |
--solution-name veya -sn | Çözüm dosyası seçilir. |
--version veya -v | İstenilen paket versiyonu seçilir. |
Oluşturduğumuz projedeki aspnet-core klasörüne giriyoruz ve "abp update" yazarak tüm paketleri güncelliyoruz.
Paket veya modül eklemek için "add-package/add-module" komutu kullanırız. Yine paket ve modül ekleme için gerekli parametreler aşağıda verilmiştir;
Parametre | Açıklaması |
|---|---|
--solution veya -s | Çözüm dosyası seçilir. |
--skip-db-migrations | Otomatik veritabanı migration etmesini engeller. |
--new | Var olan çözüm dosyasına yeni modül oluşturup uygulama projelerine referans verir. |
--with-source-code | Eklenen modülün kaynak kodu indirilip uygulama projelerine yerel referans verir. |
--add-to-solution-file | İndirilen modülün proje katmanlarını uygulama çözüm dosyasına ekler. |
İlk olarak hangi katmana paket eklememiz gerektiğini seçmemiz lazım. Ben "ABP_Ilk_Proje.Domain" katmanına Redis paketini indireceğim. CMD' yi açıp ABP_Ilk_Proje.Domain klasörüne gidiyorum ve şu komutu yazıyorum "abp add-package Volo.Abp.Caching.StackExchangeRedis".
Modül eklemek için iki seçeneğimiz vardır. Birincisi yeni bir modül indirmek, ikincisi ise var olan modülü eklemek. Var olan modülleri görüntülemek için "abp list-modules" dememiz gerekiyor.
Ben burada Volo.Blogging modülün eklemek istiyorum. Ve bu modülün kaynak kodunu da projeme eklemek istiyorum. "abp add-module Volo.Blogging --with-source-code"
Modülümüzü kaynak kodları ile birlikte eklemiştik. Kaynak kodlarına da "\aspnet-core\modules\Volo.Blogging\" dizini altında ulaşabilirsiniz.
Şimdi de bizim yazacağımız şekilde bir modül ekleyelim. Bunu için yapmamız gereken "abp add-module SampleModule --new --add-to-solution-file".
Modülümüz indikten sonra yine "modules" klasörü altında görebiliriz.
ABP Framework proxy yönetimi için iki komut vardır; "generate-proxy" ve "remove-proxy" ikisi için de geçerli olan parametreler aşağıda verilmiştir;
Parametre | Açıklaması |
|---|---|
--type veya -t | Oluşturulacak proxy'nin istemci türü belirtilir. |
--module veya -m | Oluşturulması istenen proxy modülü seçilir. |
--working-directory veya -wd | Çalışma yolu belirtilir. |
--url veya -u | Proxy oluşturlacak endpoint verilir. |
Proje Şablonları
ABP' de beş tip proje şablonu bulunmaktadır. Bunlar;
Monolithic uygulamalar için kullanılan çözümdür. "abp new <solution-name> [options]" şeklinde kurulur. Parametreleri aşağıdaki gibidir;
- -ui veya -u: Oluşturulan projenin front-end tipi seçilir. (mvc, angular, blazor-server, none)
- --tiered veya --separate-identity-server: Oluşturulan projelerin çalışması için redis'in kurulu olması gerekir.
- --mobile veya -m: React-native değeri vererek mobil uygulama oluşturmasını sağlayabiliriz.
- --database-provider veya -d: Veritabanı sağlayıcı tipi belirtilir.
- new: Diğer parametreler "options" olarak verilebilir.
Microservice/modüler uygulamalar için kullanılan çözümdür. Yine app şablonu gibi "abp new <module-name> -t module [options]" şeklinde kurulur. Parametreleri de aşağıdadır;
- --no-ui: Front-end katmanlarını oluşturmak için kullanılır.
- new: Diğer parametreler "options" olarak verilebilir.
İstemci uygulamalar için kullanılan çözümdür. Console kurmak için; "abp new <console-app-name> -t console [options]". WPF kurmak içinse; "abp new <wpf-app-name> -t wpf [options]"
- new: Diğer parametreler "options" olarak verilebilir.
Basit uygulamalar için kullanılan tek katmanlı çözümlerdir. "abp new <solution-name> -t app-nolayers [options]" şeklinde kurulur. Parametreleri aşağıdaki gibidir;
- --ui veya -u: Oluşturulacak projenin front-end tipi belirtilir. (mvc, angular, blazor-server, none)
- --database-provider: Veritabanı sağlayıcı tipi belirtilir. (ef, mongo)
- --migrate-database: Uygulama çalışırken parametre verilirse veritabanı migration yapar.
- new: Diğer parametreler "options" olarak verilebilir.
ABP Proje Katmanları
ABP ile Modülarite
ABP ile modülariteyi üç başlık altında inceleyeceğiz. Bunlar;
- Bağımlılık Grafiği (dependency graph) çözümlenmesi
- Modülleri eklenti (Plug-In) olarak kullanma
- Module yapısının bize sağladığı faydalar
ABP Framework proje katmanlarında Uygulama/ModülAdı/KatmanAdı/Module olarak tanımlanan sınıflar bulunmaktadır. Her proje katmanı kendi ve referans aldığı bağımlılıklarından sorumludur. Referans olarak alınan katmanlar kendi bulunduğu katmandaki modül sınıfına dahil olur.
Projenize referans vermeden modülü kullanmanıza olanak tanır. WordPress uygulamalarında bulunan eklenti modülleri gibi çalışır.
- Arayüzlerimiz barındırır.
- İş kodını çalıştırır.
- API olarak kullanılır.
- API olarak kullanılır. Gelen istekleri yönlendirir.
Domain Driven Design (DDD) Entity
Domain Driven Design Entity'leri dört başlık altında ele alacağız. Bunlar;
- Genel Tanımlamalar
- Entity
- ValueObject
- AggregateRoot
Veri modellerini ifade eder ve domain katmanında tanımlanır. Veri bütünlüğünü sapkayan temel kontroller buraya yazılır. Bir nesnenin geçerli olabilmesi için primary constructor fonksiyon olarak tanımlanması gerekir. Bu fonksiyon duruma göre public, internal veya protected internal olarak tanımlanabilir. ORM'ler için protected olarak parametre almayan yapıcı fonksiyon tanımlanması gerekir. Diğer AggregateRoot'lara her zaman id üstünden navigation property tanımlanamaz. Entity içindeki metot ve özellikler virtual olarak tanımlanması gerekir. Ayrıca entity'nin geçerliliği kontrol altında olabilmesi için set metotları tanımlanması gerekir.
Genelde AggregateRoot' a bağlı olan veri modelidir. Verinin tekilliğini sağlamak için id veya CompositeKey' e ihtiyaç duyar.
ID' si olmayan Entity' lerdir. Entity'ler id üstünde ayrışırken ValueObject değerleri üstünden ayrışır.
Genel veri kümeleridir. AggregateRoot' a her zaman id'ler üzerinden ilişki kurulur. Navigation Property tanımlanmaz.
ABP Generic Repository
Domain katmanında tanımlanır. Domain veya Application katmanlarında veri erişim aracı olarak repository interface'leri kullanırız. Ayrıca TEnitity ve TKey alan generic tipleride mevcuttur. Bütün metotlar asenktron olarak tanımlanmalı. Repository motolarında opsiyonel parametre olarak CancellationToken alınmalı ve Geri dönüş tipine göre includeDetails parametresi alınmalı. ABP varsayılan olarak her AggregateRoot için proxy sınıfları oluşturur. Entity için repository oluşturulmaz ve GenericRepository'ler yerine her AggrehateRoot için repository'ler oluşturulmalı.
Okuduğunuz ve ilgilendiğiniz için teşekkür ediyorum. Herkesin Kurban Bayramını şimdiden kutluyorum. Esen kalın...



