ABP Framework, genişletilebilirlik ve esneklik konusunda oldukça güçlüdür. Çoğu durumda framework'ün kaynak kodunu değiştirmek zorunda kalmazsınız. ABP, dependency injection (bağımlılık enjeksiyonu), dynamic proxy, interceptors gibi araçlar sayesinde özelleştirme ve override etme yeteneği sunar. Modüler yapı sayesinde ihtiyaçlarınıza göre mevcut fonksiyonları genişletebilir ya da değiştirebilirsiniz. Bu sayede kaynak kodunu değiştirmenize gerek kalmaz. Ancak, framework'ün özelleştirme sınırlarının dışına çıkan nadir durumlarda, kaynak kodunda değişiklik yapabilirsiniz.
Gelecekte bir iflas durumu gibi riskler için ABP'nin open-source lisanslama seçenekleri mevcut. Bu da ABP'nin belirli kısımlarını açık kaynak kodu olarak kullanmanıza izin verir. Özellikle ABP Business ve Enterprise lisans türlerinde tüm kaynak kodları indirip, kendinizi güvene alabilrisiniz.
ABP Framework içinde doğrudan süreç yönetimi (workflow management) için yerleşik bir modül bulunmamaktadır. Ancak, üçüncü parti ürünlerle kolayca entegre edilebilir. Örneğin, Elsa Workflow gibi açık kaynak süreç yönetim araçları ABP ile sorunsuz çalışabilir. İlgili makale linkleri aşağıda mevcuttur:
-
https://abp.io/community/articles/integrating-elsa-.net-workflows-with-abp-commercial-io32k420
-
https://abp.io/community/articles/using-elsa-workflow-with-the-abp-framework-773siqi9
ABP Framework, template engine veya document generation gibi özellikleri yerleşik olarak sunmamaktadır. Bu tarz gereksinimler için third-party çözümler kullanabilirsiniz. Örneğin, Razor Pages kullanarak şablonlama yapabilir ya da OpenXML SDK gibi araçlarla belge oluşturabilirsiniz. ABP’nin esnek yapısı bu tarz çözümleri kendi uygulamanıza entegre etmeyi kolaylaştırır.
Öte taraftan ABP modüllerinden Docs modülü, filesystem veya GitHub'la entegre çalışarak sitenize kolayca dökümantasyon eklemenizi sağlar. ABP'nin döküman sayfası da Docs modülü ile yapılmıştır.
ABP Framework'te yerleşik olarak expression evaluator bulunmamaktadır. Z.Expressions.Eval gibi ürünlerle çalışmaya devam edebilirsiniz, ABP buna uygun. Alternatif olarak, ABP Framework ile LinQ gibi dilden bağımsız yapıları ve üçüncü parti kütüphaneleri kullanabilirsiniz.
ABP Framework, kullanıcı yönetimi konusunda güçlü araçlar sunar. Identity Management modülü ile kullanıcıların rolleri, yetkilendirme ve kimlik doğrulama işlemleri kolayca yönetilebilir. AspNetCore Identity tabanlıdır. OAuth2 protokülünü open-source olarak implemente eden OpenIddict kütüphanesini kullanır. Kullanıcı yetkilendirme, rollerin tanımlanması gibi işlemler oldukça esnektir ve genişletilebilir.
ABP Framework, varsayılan olarak varsayılan olarak Entity Framework Core ile çalışır, ek olarak da MongoDB ve Dapper destekler. Bu şekilde maksimum veritabanı bağımsızlığı sağlar. Repository pattern ile prensiplerine uygun yazıldığı için ilerde herhangi bir veritabanı sistemine yeni bir implementasyon yazılabilir ve bu şekilde DB Provider'larınızı genişletebilirsiniz. Ayrıca Unit Of Work pattern ile de atomik işlemler yapmanızı garanti eder.
- Entity Framework 30'un üzerinde veritabanını desteklemektedir. Tam listesi => https://learn.microsoft.com/en-us/ef/core/providers.
- https://abp.io/docs/latest/framework/data/entity-framework-core
- https://abp.io/docs/latest/framework/data/mongodb
- https://abp.io/docs/latest/framework/data/dapper
ABP Framework, rol ve yetki yönetimini ASP.NET Core Authorization'ı genişleterek yapar ve oldukça esnektir. Authorization Providers ile dinamik olarak yetki ve roller tanımlanabilir. UI seviyesinde de page/component-based authorization sağlanabilir. Alan bazlı yetkilendirme, custom authorization handlers kullanarak uygulanabilir. Raporlama araçlarının ABP ile uyumlu olup olmaması, kullanılan raporlama araçlarına bağlıdır; ancak ABP, dışarıdan eklenebilecek birçok raporlama aracıyla entegre olabilir.
CMS Kit Pro, blog, etiket, yorum, puanlama ve iletişim formları gibi standart CMS işlevleri sunar. Özelleştirilmiş sayfalar tasarlamanıza olanak tanır. Ancak, ABP'de yerleşik olarak WYSIWYG tarzı bir arayüz tasarım aracı bulunmamaktadır. Bu tür araçlar için third-party çözümler (örneğin TinyMCE veya CKEditor) entegre edilebilir. Telerik, DevExpress, Syncfusion gibi component library kullanabilirsiniz. ABP içinde kullanılan UI component'ler popüler open-source library'lerdir. ABP'nin direkt kendisinin component library'si yoktur. Tema olarak kendi temamız olan LeptonX kullanıyoruz. DevExpress ve Telerik kütüphanelerinin entegrasonu için aşağıdaki linklere göz atabilirsiniz.
- https://abp.io/community/articles/how-to-integrate-the-telerik-blazor-components-to-the-abp-blazor-ui-q8g31abb
- https://abp.io/community/articles/integrating-devexpress-reporting-to-abp-mvc-application-0t99j3cz
- https://abp.io/community/articles/using-devexpress-blazor-ui-components-with-the-abp-framework-wrpoa8rw
- https://abp.io/community/articles/how-to-integrate-the-telerik-ui-for-asp.net-core-kendo-components-with-the-abp-mvc-ui-u2voab2a
- https://abp.io/community/articles/using-devextreme-angular-components-with-the-abp-framework-x5nyvj3i
- https://abp.io/community/articles/using-devextreme-components-with-the-abp-framework-zb8z7yqv
ABP Suite, CRUD işlemleri, listeleme ve tarama gibi ekranları otomatik olarak üretir. Üretilen CRUD sayfaları tamamen özelleştirilebilir. Forms modülü ise genellikle anketler ve basit form işlemleri için tasarlanmıştır, daha karmaşık form ihtiyaçlarında genişletilebilir.
ABP Framework job scheduling ve background tasks için 3rd party araçlara entegrasyon yapar. Mevcut durumda Hangfire, RabbitMQ ve Quartz entegrasyonları mevcuttur.
- Background jobs: https://abp.io/docs/latest/framework/infrastructure/background-jobs
- Background workers: https://abp.io/docs/latest/framework/infrastructure/background-workers
ABP Framework, gelişmiş bir exception handling altyapısı sunar. Global exception handling, custom exception policies ve error logging gibi özelliklerle hata yönetimi ve loglama yapılabilir. Ayrıca, Serilog, NLog gibi popüler loglama frameworkleri ile entegre çalışır. User Friendly Exception'lar UI katmanında otomatik olarak algılanıp localize edilip User Friendly hata mesajları gösterir.
ABP Framework, yerleşik caching mekanizmaları sunar. MemoryCache, Redis gibi popüler önbellekleme çözümleri ile uyumludur. Caching stratejilerinizi distributed cache veya in-memory cache olarak kolayca yönetebilirsiniz.
ABP, güçlü bir localization altyapısına sahiptir ve Microsoft Localization extend eder. Çok dilli projeler için IStringLocalizer ve JSON resources kullanılır. Globalization ve localization ihtiyaçlarınız için yerleşik araçlar ve altyapı sunar, kullanıcı deneyimini iyileştirmek için dynamic localization desteği de vardır. Exception'ların localize fırlatılması, backend kodlarda, Razor pages'de , Angular ve Blazor altyapılarında localization kullanmak oldukça basittir.
- https://abp.io/docs/latest/framework/fundamentals/localization
- https://abp.io/docs/latest/framework/api-development/standard-apis/localization
- https://abp.io/docs/latest/framework/ui/mvc-razor-pages/javascript-api/localization
ABP, multi-tenancy desteği sunar ve varsayılan olarak açık gelir. Tenant-specific databases ve shared databases olmak üzere iki tür multi-tenant veritabanı yapısını destekler. Tenant yönetimi, dynamic tenancy resolution ve custom tenant configuration seçenekleri ile genişletilebilir.
-
https://abp.io/docs/latest/framework/architecture/multi-tenancy
-
ABP'de yaptığımız multi-tenancy yapısını da anlattığım DevDays 2024 Lithuania konferansındaki konuşmamı dinleyebilirsiniz https://www.youtube.com/watch?v=skIYOdj5yGk
ABP Framework'ün yerleşik bir raporlama modülü yoktur. Ancak Power BI, Fast Reports, Stimulsoft ve Qlik gibi raporlama araçları entegre edebilirsiniz. Burada ABP herhangi bir blokaj ve kısıtlama yaratmaz.
ABP Framework, RabbitMQ, Azure Service Bus gibi kuyruk ve mesajlaşma sistemleri ile entegre olabilir. Pub & Sub mekanizması ile çalışır. İlgili entegrasyonların dökümanı aşağıdadır.
- https://abp.io/docs/latest/framework/infrastructure/event-bus/distributed/rabbitmq
- https://abp.io/docs/latest/framework/infrastructure/event-bus/distributed/azure
- https://abp.io/docs/latest/framework/infrastructure/event-bus/distributed/kafka
- https://abp.io/docs/latest/framework/infrastructure/event-bus/distributed/rebus
- https://abp.io/community/articles/real-time-messaging-in-a-distributed-architecture-using-abp-framework-singalr-rabbitmq-daf47e17
ABP, microservices architecture için tasarlanmış modüler bir yapıya sahiptir. Distributed event bus, multi-tenant yapılar ve distributed transactions gibi mikroservisler için önemli araçlar sağlar.
- https://abp.io/docs/latest/get-started/microservice
- https://abp.io/docs/latest/framework/architecture/microservices
- https://abp.io/docs/latest/solution-templates/microservice
- https://abp.io/docs/latest/deployment/distributed-microservice
ABP'nin Feature Management modülü ile dinamik olarak uygulama içinde farklı özellikleri yönetebilirsiniz. Özellikle multi-tenant sistemlerde kullanılır. Feature, SaaS bir sistemin farklı lisanslama planlarında bulunan özelliklerdir. Bu özellikler, aynı rol ve yetki mantığı gibi lisans tipleri ve feature olarak gruplanır. Rol = Lisans tipi, Permission = Feature. Bir tenant'ın bir özelliği kullanıp kullanamayacağının kontrolü bu mekanizma ile kolayca yapılır. Teknik olarak detayına bakmak için aşağıdaki linkleri ziyaret ediniz.
- https://abp.io/docs/latest/framework/infrastructure/features
- https://abp.io/docs/latest/Modules/Feature-Management
ABP Studio, geliştiricilere ve DevOps ekiplerine modüler yapılar, işlevselliklerin merkezi yönetimi ve CI/CD süreçlerinde kolaylık sunar. ABP CLI ve ABP Suite entegrasyonlarıyla hızlı geliştirme sağlar.
ABP Framework, CI/CD pipelines ve containerization (Docker/Kubernetes) süreçleri ile uyumludur. Modüler yapısı sayesinde DevOps süreçlerini hızlandırır. ABP Studio kullanarak canlıdaki sistemlerinize bağlanıp kodlarınızı debug edebilirsiniz. Fakat ABP direkt bir deployment tool sunmaz.
Aktif ücretli lisansı bulunan kullanıcılar, destek için https://abp.io/support sitesini kullanırlar. Bunun haricinde aşağıdaki sitelerde de ABP ile ilgili destek alabilirler.
- https://github.com/abpframework/abp/issues
- https://github.com/abpframework/abp/discussions
- https://stackoverflow.com/questions/tagged/abp-framework
- https://abp.io/community/discord
ABP.io'nun danışmanlık hizmetleri, projelerinizin ihtiyacına göre özelleştirilebilir. Dilerseniz birebir gerçekleşen ABP eğitimleri alıp, öğrenme eğrinizi hızlandırabilirsiniz.