Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, Fırat Üniversitesi yazılım mühendisliği son sınıf öğrencisi ve Volosoft'ta yazılım ekibinin bir üyesi olan Ahmet Fur tarafından sunulan bir eğitim içeriğidir. Microsoft Partner etkinliğinde ABP Framework'ü tanıtmaktadır.
- Video, ABP Framework'ün ne olduğunu ve sunduğu özellikler hakkında bilgi vererek başlıyor, ardından ABP CLI kullanarak basit bir blog uygulaması geliştirme sürecini adım adım göstermektedir. Eğitmen, domain katmanında kategori ve post entitelerinin oluşturulması, DTO'lar oluşturma, AutoMapper ile otomatik mapleme, AppService sınıfı oluşturma, permission management sistemi ve rol tabanlı izinler gibi konuları ele almaktadır.
- Eğitim boyunca ABP Framework'in çoklu kiracı desteği, servisler, temel özellikleri ve hata yönetimi gibi avantajları gösterilmekte, ayrıca Entity Framework Core ile veritabanı yapılandırması, authorization ayarları ve modül geliştirme konularına da değinilmektedir. Video, izleyicilerden gelen soruların yanıtlanmasıyla sonlanmaktadır.
- 01:19Sunum ve ABP Framework Tanıtımı
- Konuşmacı Ahmet Fur, Fırat Üniversitesi'nde yazılım mühendisliği son sınıf öğrencisi ve Volosoft'ta yazılım ekibinin bir üyesi olarak Microsoft Partner etkinliğinde ABP Framework'ü tanıtacak.
- ABP Framework, ASP.NET Core tabanlı web uygulamaları geliştirmek için oluşturulmuş açık kaynaklı bir framework'dür.
- Bu framework, domain drive design (DDD) tabanlı uygulama geliştirmeyi kolaylaştırır.
- 03:24ABP Framework'ün Özellikleri
- ABP Framework, uygulamalara hızlıca multi-tenancy (çok kiracı) özelliği eklemeyi sağlar.
- Framework, current user, block storing, text template gibi birçok servis sağlar.
- Audit, login, caching, exception handling gibi birçok konuda hızlı ve güvenilir entegrasyon imkanı sunar.
- 06:38ABP CLI ve Proje Oluşturma
- ABP CLI, proje geliştirme için birçok kolaylık sağlar ve şablonları otomatik oluşturabilir.
- CLI ile proje oluştururken database provider, user interface gibi parametreler belirlenebilir.
- Proje oluşturmak için sisteminde .NET Core yüklü olması ve "dotnet tool install -g Volo.Abp.Cli" komutunu çalıştırmanız gerekiyor.
- 09:34Proje Yapısı ve Başlangıç
- Oluşturulan çözüm, ABP'nin katmanlı (layer) tasarımına uygun şekilde domain, application ve web katmanlarından oluşur.
- Başlangıç projesinde kimlik yönetimi ve müşteri yönetimi gibi temel özellikler bulunur.
- Rol yönetimi sayfasından yeni roller oluşturulabilir ve bu rollerin hangi yetkilere sahip olacağını ayarlayabilirsiniz.
- 14:47Domain Katmanına Özellik Ekleme
- Domain katmanına kategori ve post gibi sınıflar eklenebilir.
- ABP Framework, domain katmanında entity, aggregate root, auditing gibi temel sınıfları barındırır.
- Kategoriler için full audit ve aggregate root özellikleri kullanılabilir, primary key olarak guid type seçilebilir.
- 16:09Entity Oluşturma ve Özellikleri
- Soft delete özelliği sağlayan bir entity oluşturuluyor ve bu özellik hiçbir ek kodlama yapmadan framework tarafından sağlanıyor.
- Multitenant desteği için tenant id özelliği ekleniyor.
- Kategori entity'si için sadece category name özelliği oluşturuluyor.
- 17:27Entity Sabitleri ve Constructor'lar
- Domain shared katmanında kategori sabitleri için bir sınıf oluşturuluyor ve maksimum name length 64 olarak tanımlanıyor.
- Entity için boş bir constructor ve parametreli bir constructor oluşturuluyor.
- Parametreler için kontrol yapılarak null değerler ve maksimum uzunluk kontrolü sağlanıyor.
- 19:31Entity'yi Veritabanına Kaydetme
- Entity'yi veritabanına kaydetmek için DbContext sınıfında DbSet tanımlanıyor.
- Configure metodu kullanılarak entity ayarları yapılandırılıyor.
- Migration eklenerek veritabanı güncelleniyor ve tablo oluşturuluyor.
- 23:40DTO Oluşturma
- Uygulama katmanına entity yerine DTO (Data Transfer Object) kullanmak için kategori DTO oluşturuluyor.
- Kullanıcı kategori oluştururken veya güncellerken kullanacağı CreateUpdateCategoryDto sınıfı oluşturuluyor.
- AutoMapper profile içerisinde entity ile DTO'lar arasındaki otomatik map ayarları yapılıyor.
- 26:28Uygulama Servisi Oluşturma
- Uygulama katmanında kategori app service sınıfı oluşturuluyor.
- Application contract katmanında ICategoryAppService interface'i oluşturuluyor.
- ABP framework'ün CrudAppService sınıfından türetilen app service oluşturuluyor ve gerekli parametreler veriliyor.
- 30:18Oluşturulan Sistemin Test Edilmesi
- Web uygulaması çalıştırıldığında herhangi bir ekstra kod yazmadan arka plandaki CRUD işlemlerinin gerçekleştiği ortam hazır hale geliyor.
- Swagger üzerinden tüm endpoint'lerin oluşturulmuş olduğu görülebiliyor.
- Kategori create işlemi yapılarak, herhangi bir ekstra kod yazmadan kategori oluşturulabiliyor ve detayları görüntülenebiliyor.
- 33:47ABP Framework ile Kategori Oluşturma
- ABP Framework ile kategori oluşturmak için "getlist" metodu kullanılarak veritabanından tüm kategorileri almak mümkündür.
- ABP Framework, entiti belirleyerek ekleme, silme, güncelleme işlemlerini yapmak için herhangi bir ekstra kod yazmadan altyapıyı sağlar.
- Bu framework sayesinde iki satır kodla tüm işlemler gerçekleştirilebilir, ancak authorization gibi ayarlar yapılmak zorundadır.
- 36:16Post Entity Oluşturma
- Post entity'i oluşturmak için domain katmanına bir director oluşturulur ve içerisinde post entity'i tanımlanır.
- Post entity'i kategori entity'sine bağlı olup title, açıklama ve content alanlarına sahiptir.
- Entity için constantlar (max title length, max description length, max content length) tanımlanır.
- 40:19Entity Framework Ayarları
- Post entity'i için database'deki sütunları özelleştirmek için title, description ve content alanları belirlenir.
- Kategori ve post arasında bir çok ilişki (one-to-many) oluşturulur.
- İlişki için navigation property kullanılmaz, sadece kategori ID'si kullanılır.
- 43:47DTO ve App Service Oluşturma
- Contract kısmına post DTO'su oluşturulur ve create/update post DTO'su için gerekli alanlar tanımlanır.
- App service interface'i oluşturulur ve post için gerekli metotlar tanımlanır.
- Uygulama katmanına post app service sınıfı oluşturulur ve tüm CRUD işlemleri hazır hale getirilir.
- 48:40Authorization İşlemleri
- Kullanıcı giriş olmadan post ekleme yapılmasını engellemek için authorization ayarları yapılır.
- Post için create, update ve delete permission'ları tanımlanır.
- Permission management sayfasında blog sekmesi oluşur ve roller için izinler atanabilir.
- 54:00App Service Yetkilendirme
- App Service'te yetkilendirme için base class kullanılarak "block permission post default" komutu ile post erişimini sadece giriş yapmış ve post yetkisi olan kullanıcılar için kısıtlayabilirsiniz.
- Create, update ve delete metodları için yetkilendirme yapmak için base class'tan gelen metodları override edip "block permission post create permission" komutu ile kullanıcıların bu metodlara erişebilmesini sağlayabilirsiniz.
- Yetkilendirme yapıldıktan sonra, belirli permission'a sahip olmayan kullanıcılar bu metodları kullanamaz.
- 56:44Kullanıcı ve Rol Yönetimi
- App Taggle ve localization gibi kullanıcı arayüzü kolaylıklarından bahsedilmek istenmiştir.
- Admin kullanıcısı üzerinden yeni bir kullanıcı (Ahmet) oluşturulmuş ve editör rolü verilmiştir.
- Editör rolüne sahip kullanıcılar blog kayıtlarına sadece görebilme ve oluşturma yetkisine sahiptir, update ve delete yetkisi yoktur.
- 58:33Test ve Kapanış
- Admin rolünden Ahmet kullanıcısına geçiş yapılarak test edilmiştir.
- Ahmet kullanıcısıyla blog post create işlemi yapılmaya çalışıldığında hata alınmıştır.
- AutoMapper hatası alındığı belirtilmiş ve bu hatanın kolayca düzeltilineceği ifade edilmiştir.
- 1:02:20Modül Tasarımı Hakkında
- Modül devam hakkında sorulduğunda, bir şeyin modül olması için kullanıcı arayüzü veya database tablosu gibi bir şeyler içeriyorsa ayrı bir modül olarak yapılabilir.
- Modül geliştirmek için en büyük referans A.Pi'nin kendisidir ve GitHub'tan ABP repository'sindeki modül kısımlarına bakılabilir.
- İlerleyen zamanlarda farklı konular üzerinde daha uzun yayınlar yapılacağı belirtilmiştir.