Neden ABP.IO Platform?

abp.io mascot

Bu belge büyük oranda bu soruyu cevaplamayı amaçlamaktadır:

"Neden 0'dan modern bir yazılım projesi oluşturmak yerine ABP.IO kullanmalısınız'?"

Bu belge, modern bir yazılım projesi oluşturmanın zorluklarını tanıtır ve ABP'nin bu zorluklarla nasıl başa çıktığını açıklar.

abp.io mascot

Yeni bir yazılım projesi oluşturma

Yeni bir yazılım projesine başlayacak olduğunuzda kendinize sormanız gereken birçok soru ortaya çıkar ve ilk kodlarınızı yazmaya başlamadan önce birçok zamanınız harcanır.


PROBLEM

Neredeyse boş bir yazılım projesi oluşturmak bile zordur:

  • Kod tabanınızı projeler arasında nasıl düzenlersiniz?
  • Katmanlar nelerdir ve nasıl etkileşime girerler?
  • 3. taraf kütüphaneleri nasıl entegre edersiniz?
  • Otomatik testler nasıl kurulur?

ABP PROJESİ

ABP, iyi tasarlanmış, katmanlı ve üretim için hazır bir başlangıç projesi sağlar. Bu proje, aynı zamanda her katman için önceden yapılandırılmış birim ve entegrasyon testlerini içerir. Temeli Domain Driven Design prensiplerine dayanmaktadır.


PROBLEM

Ortak gereksinimleri uygulayabilmek için hangi kütüphaneleri kullanmalısınız? Yazılım geliştirme ekosistemi son derece dinamik olduğundan, en son araçları, kütüphaneleri, trendleri ve yaklaşımları takip etmek zorlayıcı olabilir.

ABP PROJESİ

ABP, popüler, olgun ve güncel kütüphaneleri projeye önceden entegre eder. Bunları entegre etme veya birbirleriyle iletişim kurma konusunda zaman harcamanıza gerek yoktur. Kütüphaneler kutudan çıkar çıkmaz düzgün bir şekilde çalışırlar.


PROBLEM

UI konularını ele alırken bir dizi zorluk ortaya çıkar. Bu zorluklar, tutarlı bir görünüme sahip, duyarlı, modern ve uyarlanabilir bir UI kit için temel oluşturmayı içerir. Bu UI kitinin tutarlı bir görünüme sahip olması ve gezinme menüleri, başlıklar, araç çubukları, altbilgiler, widget'lar gibi bir dizi özelliği barındırması gibi unsurları içerir.

Önceden tasarlanmış bir temayı seçseniz bile, bunu projenize sorunsuz bir şekilde entegre etmek günler sürebilir. Buna ek olarak, bu tür temaları güncellemek de ek bir zorluk oluşturabilir. Sıkça, temanın HTML/CSS yapısı, UI kodunuzla iç içe geçer, bu da gelecekteki tema değişikliklerini veya yükseltmelerini karmaşık hale getirir. Kodun ve tasarımın bu iç içe geçmesi, ileride ayarlamalar yapma esnekliğini zorlaştırır.

ABP PROJESİ

ABP Framework, UI kodunuzu tema kısıtlamalarından özgürleştiren ayırt edici bir tema sistemine sahiptir. Temalar izole bir şekilde varlığını sürdürür, NuGet veya NPM paketleri olarak paketlenir, bu da tema kurulumunu veya yükseltmeyi birkaç dakikalık bir iş haline getirir. Özel bir tema geliştirme veya mevcut bir temayı entegre etme seçeneğini korurken, ABP Commercial, çağdaş temalardan oluşan bir koleksiyon sunar.

Ayrıca, Telerik ve DevExpress gibi UI bileşen sağlayıcıları bulunmaktadır. Ancak, bu sağlayıcılar genellikle bireysel bileşenleri sağlar ve düzen sistemini oluşturma sorumluluğunu size bırakır. ABP tabanlı projelerde çalışırken, bu kütüphaneleri diğer projelerde olduğu gibi sorunsuz bir şekilde entegre edebilirsiniz.


PROBLEM

Sağlam bir test ortamı oluşturmak zaman alıcı bir çabadır. Bu, projeniz içinde özel test projeleri oluşturmayı, gerekli araçları dikkatlice seçmeyi, hizmet ve veritabanı taklitlerini oluşturmayı, testler arasında gereksiz kodu en aza indirmek için temel sınıflar ve yardımcı hizmetler oluşturmayı ve çeşitli ilgili görevleri ele almamızı içerir.

ABP PROJESİ

ABP Başlangıç Şablonları, sizin için yapılandırılmış test projeleri ile gelir, bu da süreci sizin için kolaylaştırır. Bu, ilk günden itibaren başlangıçta birim veya entegrasyon test kodu yazmaya hemen başlayabileceğiniz anlamına gelir.


PROBLEM

Projeyi geliştirme için kurduktan sonra, genellikle geliştiricilere sistemin nasıl çalıştığını ve aynı üzerinde anlaşılan yöntemleri kullanarak nasıl oluşturacaklarını öğretmeniz gerekir. Onlara eğitim verirseniz bile, belgeleri güncel tutmak zor olabilir. Zaman içinde her bir geliştirici kendi yöntemine göre kod yazabilir, bu da kod yazma kurallarının birbirinden farklı hale gelmesine neden olabilir.

ABP PROJESİ

ABP projesi zaten düzenli bir şekilde organize edilmiş ve açıklayıcıdır. Adım adım öğreticiler ve kılavuzlar, bir ABP projesinde nasıl çalışılacağını tam olarak gösterir.


PROBLEM

Geliştirmeye başladıktan sonra, kullanılan kütüphanelerin yeni sürümlerini güncellemeler ve yamalar için takip etmelisiniz.

ABP PROJESİ

Düzenli olarak tüm paketleri en son sürümlere güncelliyor ve bunları kararlı sürüm öncesinde test ediyoruz. ABP Framework'ü güncellediğinizde, tüm bağımlılıkları en güncel teknolojiye yükseltilir.

Abp update CLI komutu, otomatik olarak bir projedeki tüm ABP bağımlı NuGet ve NPM paketlerini keşfeder ve günceller. ABP ile en son sürümlerde kalmak daha kolaydır.


Kendini Tekrar Etme!

abp.io Kendini Tekrar Etme!

Temel bir proje oluşturmak önemli zaman alır ve iyi bir mimari deneyimi gerektirir. Ancak bu sadece başlangıçtır! Geliştirmeye başladıkça, muhtemelen birçok tekrarlayan kod yazmanız gerekecektir; eğer tüm bunlar otomatik olarak işlenebilseydi harika olurdu.

ABP, konvansiyon üzerinde konfigürasyon prensibini takip ederek tekrarlayan kodları mümkün olduğunca otomatikleştirir ve basitleştirir. Ancak manuel moda geçmeniz gerektiğinde sizi sınırlamaz. Kontrol her zaman sizin elinizdedir.

abp.io Kendini Tekrar Etme!

PROBLEM

Tek Oturum Açma, Active Directory / LDAP Entegrasyonu, OpenIddict entegrasyonu, sosyal girişler, iki faktörlü kimlik doğrulama, şifre unutma/sıfırlama, e-posta etkinleştirme, yeni kullanıcı kaydı, şifre karmaşıklık kontrolü, başarısız giriş denemelerinde hesabın kilitlenmesi, başarısız giriş denemelerinin gösterilmesi... vb. Tüm bu genel gereksinimlerin size tanıdık geldiğini biliyoruz. Yalnız değilsiniz!

ABP PROJESİ

ABP Framework ve Commercial sürüm, tüm bu standart özellikleri sizin için önceden uygulanmış, yeniden kullanılabilir bir hesap modülü olarak sağlar. Sadece ihtiyacınız olanı etkinleştirip yapılandırırsınız.


PROBLEM

Cross Cutting Concerns, her kullanım durumu için uygulanması gereken temel tekrar eden mantıktır. Bazı örnekler;

  • İşlemleri başlatma, başarılı durumlarda commitleme ve hata durumlarında rollback alma
  • İstisnaları işleme ve rapor etme, istemcilere uygun hata yanıtını döndürme ve istemci tarafındaki hata durumlarını işleme.
  • Yetkilendirme ve doğrulama uygulama, uygun yanıtları döndürme ve bunları istemci tarafında işleme.

ABP PROJESİ

ABP Framework, tüm ortak Cross Cutting Concerns otomatikleştirir veya basitleştirir. Siz sadece işletmeniz için önemli olan kodu yazarsınız, gerisini ABP, kurallarına göre ele alır.


PROBLEM

Genellikle mimarinizi düzgün bir şekilde uygulamak için altyapı oluşturmanız gerekir. Örneğin, genellikle Repository desenini uygularsınız. Entityleri, servisleri, controlleri ve diğer nesneleri oluşturmayı basitleştirmek ve standartlaştırmak için bazı base class'ları tanımlarsınız.

ABP PROJESİ

ABP Framework, tüm bunları ve daha fazlasını içerisinde barındırır. Son derece iyi belgelenmiştir.


PROBLEM

Her iş uygulamasında tekrar tekrar uyguladığınız birçok gereksinim vardır;

  • Detaylı izin sistemi ve izinleri roller ve kullanıcılara göre UI üzerinde yönetme.
  • Denetim günlüklerini ve bir kullanıcının bir veritabanı kaydını değiştirdiği zamanı takip etmek için entity geçmişlerini yazma.
  • Entitylerinizi soft-delete yapacak şekilde yapılandırma, böylece fiziksel olarak veritabanından silmek yerine silinmiş entityleri otomatik olarak sorgularınızdan filtreleme.
  • Backend API'larınızı Frontend kodundan tüketmek için soyutlamalar ve sarmallar oluşturma.
  • Arka planda işleri sıraya koyma ve yürütme.
  • Küresel bir sistemde birden çok zaman dilimiyle başa çıkma.
  • Doğrulama, yerelleştirme, yetkilendirme mantığını sunucu ve istemci arasında paylaşma.

ABP PROJESİ

ABP, bu tür gereksinimleri kolayca uygulamak için bir altyapı sağlar. Bu sayede, tüm bunları tekrar tekrar uygulamak için değerli zamanınızı harcamazsınız.


PROBLEM

Tipik bir web uygulamasında birçok benzer sayfa oluşturacaksınız. Çoğu zaman benzer CRUD işlemlerini gerçekleştireceklerdir. Bu tür sayfaları sürekli olarak oluşturmak çok sıkıcı ve hata yapmaya müsaittir.

ABP PROJESİ

ABP Suite ile entityleriniz için gerekli olan temel CRUD sayfanızı saniyeler içinde oluşturabilirsiniz. Oluşturulan kod katmanlı ve temizdir. Tüm standart doğrulama ve yetkilendirme gereksinimleri uygulanmıştır. Ayrıca birim testi sınıfları da oluşturulur. Tamamen çalışan bir sayfa elde ettiğinizde, onu iş gereksinimlerinize göre değiştirebilirsiniz.


PROBLEM

Çoğu kütüphane düşük seviyede tasarlanmıştır ve genellikle her yerde aynı entegrasyon ve yapılandırma kodunu tekrar etmeden bunları düzgün bir şekilde entegre etmek için biraz çalışma yaparsınız. Örneğin, distributed event bus için RabbitMQ kullanmanız gerekiyorsa, yapmak istediğiniz tek şey; bir mesajı bir kuyruğa göndermek ve gelen mesajları işlemektir. Ancak, mesajlaşma desenlerini, kuyrukları ve değişim detaylarını anlamanız gerekir. Verimli kod yazabilmek için bağlantıları, istemcileri ve kanalları yönetmek için bir havuz oluşturmanız gerekir. Ayrıca istisnalarla, ACK mesajlarıyla, başarısızlıklarda RabbitMQ'ya yeniden bağlanma gibi konularla uğraşmalısınız.

ABP PROJESİ

Örneğin, ABP'nin RabbitMQ Distributed Event Bus entegrasyonu tüm bu ayrıntıları soyutlar ve size telaşlanmadan mesaj gönderip almanın keyfini yaşatır. Düşük seviyeli kod yazmanız gerekiyorsa da endişelenmeyin, ABP her zaman size bu esnekliği sunar ve kullanmakta olduğunuz kütüphanenin düşük seviyeli özelliklerini kullanmanıza engel olmaz.


PROBLEM

Tüm altyapı, en basit şekliyle bile oluşturmak, sürdürmek ve belgelemek için çok zaman alır. Zamanla büyür ve projenizde bunu sürdürmek zorlaşır. Bunları tekrar kullanılabilir bir projeye ayırmak, kendi iç frameworkünüzü oluşturmanın başlangıç noktasıdır.

Dahili bir framework oluşturmak, belgelemek, eğitim vermek ve sürdürmek gerçekten zordur. Deneyimli, özel bir framework ekibiniz yoksa, dahili frameworkünüz hızla anlaşılamayan bir miras kodu haline gelir. Bunun yanı sıra, bu frameworkler genellikle ekipteki bir veya iki geliştirici tarafından geliştirilir. Ve bu arkadaşlar bir bilgi deposu haline gelir. Bu onlar için iyi olabilir ancak şirket için kötüdür çünkü onlar proje için tek nokta hatası -SPOF-'dir. Şirketi terk ettiklerinde, proje dramatik bir şekilde düşer.

ABP PROJESİ

ABP Framework, topluluk tarafından yönlendirilen, iyi belgelenmiş, olgun ve genel bir uygulama frameworküdür. Yüksek deneyime sahip bir geliştirici ekibi, onu güncel, anlaşılır ve kullanımı kolay tutmak için çalışmaktadır. Bu kadar stabil bir framework kullanmak, kendi işletme kodunuza odaklanmanızı ve ihtiyacınız olduğunda uzmanlardan framework konusunda yardım almanızı sağlar.


Mimari Altyapı

abp.io mascot

SaaS uygulamaları, modüler veya mikroservis sistemleri en çok kullanılan kurumsal yazılım modelleridir. Bu tür sistemleri oluşturmak sadece iyi bir anlayış ve deneyim gerektirmekle kalmaz, aynı zamanda güçlü bir yazılım altyapısı gerektirir. Aksi takdirde, kod tabanınızdaki bu mimari detayları desteklemek için büyük çaba harcamanız gerekebilir.

abp.io mascot

PROBLEM

Gerçekten modüler bir sistem oluşturmak kolay değildir! Sistemin tüm yönleri (veritabanı, varlıklar, API'lar, UI sayfaları/bileşenleri) modüllere ayrılabilir ve her modül, diğerleri olmadan tekrar kullanılabilir. ASP.NET Core, böyle bir modüler mimari sunmaz. Bunu istiyorsanız, sıfırdan düşünmeniz gerekebilir.

ABP PROJESİ

ABP Framework, modüler bir uygulama geliştirme yapısı olmak üzere doğmuştur. Frameworkteki her özellik, modülerlikle uyumlu olacak şekilde geliştirilmiştir. Belgeler ve rehberler, nasıl standart bir şekilde yeniden kullanılabilir modüller geliştireceğinizi açıklar.


PROBLEM

Multi-Tenancy SaaS sistemlerini uygulamanın yaygın bir yoludur. Ancak, tutarlı bir Multi-Tenancy altyapısı uygulamak karmaşık hale gelebilir.

ABP PROJESİ

ABP Framework, eksiksiz bir multi tenancy altyapı sağlar ve işletme kodunuzdan karmaşıklığı soyutlar. Uygulama kodunuzun çoğu multi-tenancy duyarlı olacaktır, ancak ABP Framework otomatik olarak veritabanını, önbelleği ve diğer tenancy ayrıntılarını birbirinden izole eder. Tek bir veritabanını, her tenancy için bir veritabanını ve karma yaklaşımları destekler. Normalde multi-tenancy uyumlu olmayan Microsoft Identity ve OpenIddict gibi kütüphaneleri uygun şekilde yapılandırır.


PROBLEM

Bir mikroservis sistemi oluşturmak birçok altyapı ayrıntısı gerektirir: Uygulamaların ve mikroservislerin doğrulanması, yetkilendirilmesi ve mikroservisler arasında eşzamansız mesajlaşma ve eşzamanlı (Dinlenme/GRPC) iletişim kalıplarının uygulanması en temel konulardır.

ABP PROJESİ

ABP Framework, endüstri standardı araçları kullanarak mikroservis projenizi uygulamanıza yardımcı olacak hizmetler, rehberler, ve örnekler sağlar.

ABP Commercial bir adım daha ileri gider ve mikroservis projenizi başlatmak için tam bir başlangıç şablonu sağlar.


abp.io module

Önceden Oluşturulmuş Modüller

PROBLEM

Hepimizin benzer ancak biraz farklı iş gereksinimleri var. Ancak hiç kimsenin kodu doğrudan projenizde çalışamadığından dolayı tekerleği yeniden icat etmeliyiz. Hepsi daha büyük bir projenin gömülü parçalarıdır.

abp.io module

ABP PROJESİ

ABP Commercial modülleri ödeme, sohbet, dosya yönetimi, denetim günlüğü raporlama vb. gibi birçok yeniden kullanılabilir uygulama modülü sağlar. Bu modüllerin hepsi projenize kolayca yüklenir ve doğrudan çalışır. Sürekli olarak daha fazla modül ekliyoruz.

Tüm modüller, iş gereksinimleriniz için özelleştirilebilir olarak tasarlanmıştır. Tam kontrol istiyorsanız, herhangi bir modülün tam kaynak kodunu indirebilir ve tamamen belirli iş gereksinimlerinize göre özelleştirebilirsiniz.


ABP Topluluğu

ABP Topluluğu

Son olarak, herkesin benzer kodlama stillerini ve prensiplerini takip ettiği ve ortak bir altyapı paylaştığı büyük bir toplulukta olmak, sorun yaşadığınızda veya tasarım kararları konusunda yardıma ihtiyaç duyduğunuzda güç getirir. Benzer şekilde kod yazdığımızdan dolayı birbirimize çok daha iyi yardımcı olabiliriz. ABP, GitHub'da 10.000'den fazla yıldızı olan bir topluluk destekli bir projedir.

ABP geliştiricileri arasında kod veya hatta yeniden kullanılabilir kütüphaneleri paylaşmak çok kolaydır. Size çalışan bir kod parçası, diğerleri için de çalışacaktır. Uygulamanız için doğrudan uygulayabileceğiniz birçok örnek ve öğretici bulunmaktadır.

ABP mimarisiyle daha önce çalışmış bir geliştiriciyi işe aldığınızda, projenizi hemen anlayacak ve çok kısa bir sürede geliştirmeye başlayacaktır.