.NET hangi projelerde doğru seçim
.NET, Microsoft’un açık kaynaklı geliştirme platformu; ASP.NET Core da bunun web ve API tarafı. Güçlü tip sistemi, olgun araçları ve uzun destek süreleriyle, yıllarca büyüyecek ve iş kuralları zamanla çoğalacak sistemlerde rahat çalışır. Bugünkü .NET Linux’ta çalışıyor; Windows sunucuya bağlı değilsiniz.
.NET’in iyi oturduğu durumlar
- Çok sayıda rol, bölge ya da birim bazlı yetki ve kimin neyi değiştirdiğini gösteren denetim kaydı gerekiyor
- Şirketinizin mevcut sistemleri ve ekibi zaten .NET üzerinde
- İş kuralları karmaşık ve zamanla artacak; kodun katmanlara ayrılması önemli
- Ağır raporlama ve toplu veri aktarımı sistemin parçası
Başka bir yol önereceğimiz durumlar
- Birkaç ekrandan oluşan küçük bir ilk sürüm hedefliyorsunuz; ABP’nin kurulumu bu ölçek için ağır kalır
- Ürünün merkezinde anlık mesajlaşma var ve ekip tamamen TypeScript ile çalışıyor (burada Node.js’i öneriyoruz)
- İşin çoğu belge işleme ya da yapay zekâ modelleriyle çalışmak (burada Python’u öneriyoruz)
ABP Framework ile katmanlı mimari
ABP Framework, ASP.NET Core üzerine kurulu ve alan odaklı tasarımı (DDD) temel alan açık kaynaklı bir uygulama çatısı. Kimlik, rol ve izin yönetimi, denetim kaydı, arka plan işleri ve ayarlar hazır modül olarak gelir; biz zamanımızı müşterinin iş kurallarına ayırırız. Çözüm, her biri tek bir sorumluluğu olan projelere bölünür:
| Katman | Sorumluluğu | Bir müşteri projesindeki karşılığı |
|---|---|---|
| Domain | Varlıklar, iş kuralları, domain olayları | Kayıt, ziyaret ve işlem varlıkları; işlem kaydında bildirim gönderen olay işleyici |
| Application | Kullanım senaryoları ve yetki kontrolü | Mobil taraf ve yönetim paneli için iki ayrı uygulama katmanı |
| HttpApi.Host | API, kimlik doğrulama, API belgesi | Mobil API ve yönetim API’si için iki ayrı host |
| EntityFrameworkCore | Veritabanı erişimi ve migration | PostgreSQL ve PostGIS; ağır raporlar Dapper ile |
| DbMigrator | Şema güncelleme ve başlangıç verisi | Roller ve başlangıç kullanıcıları |
Bir müşteri projesinde .NET
Bir müşteri projesinde, sahada çalışan ekipleri ve anlaşmalı noktaları olan bir kurum için kayıt ve yönetim platformu geliştirdik. Kayıtlar, saha ziyaretleri, işlem geçmişi ve bölge bazlı yetkiler tek sistemde. Arka uç .NET ve ABP ile, yönetim paneli Vite ve React ile, mobil uygulama Expo ile yazıldı. Arka uçta öne çıkan kararlar:
- İki ayrı API host’u var: biri mobil uygulamanın, diğeri yönetim panelinin kullandığı. İkisi aynı domain katmanını paylaşıyor, uygulama katmanları ve yetkileri ayrı.
- Konumlar ve bölge sınırları PostgreSQL’de PostGIS ile tutuluyor ve EF Core’a NetTopologySuite ile bağlı. Haritalı yönetim ekranları ve bölgeye göre filtreleme bunun üzerine kurulu.
- Listeler, sayımlar ve işlem raporları gibi ağır sorgular Dapper ile doğrudan SQL olarak yazıldı; geri kalan veri erişimi EF Core ile.
- Denetim kayıtları ana veritabanından ayrı bir veritabanına yazılıyor.
- Bir işlem kaydedildiğinde bir domain olayı tetikleniyor ve ilgili kişiye SMS bildirimi gidiyor; iş kuralı ile bildirim birbirinden ayrı kalıyor.
- QR kodlar QRCoder ile üretiliyor; Excel dışa aktarma EPPlus ile, CSV içe aktarma CsvHelper ile yapılıyor.
- Toplu veri aktarımları için ayrı bir komut satırı aracı var: önce deneme modunda çalışıp rapor üretiyor, veriyi ancak açıkça onaylandığında yazıyor.
.NET’in yanında kullandığımız araçlar
ABP Framework
Katmanlı çözüm yapısı, kimlik, izin ve denetim kaydı modülleri. Bir müşteri projesinin arka ucunu ABP ile kurduk.
Entity Framework Core
Nesne-ilişkisel eşleme ve migration ile şema yönetimi. Aynı projede PostgreSQL ile kullanıyoruz.
PostGIS ve NetTopologySuite
Konum, sınır ve yakınlık sorguları için. Haritalı yönetim ekranları bunun üzerinde çalışıyor.
Dapper
EF Core’un yanında, performansı önemli rapor ve liste sorgularını doğrudan SQL ile yazmak için.
OpenIddict
Mobil uygulama ve yönetim paneli için token tabanlı kimlik doğrulama. ABP’nin hesap modülüyle birlikte kullanıyoruz.
Serilog
Yapılandırılmış ve eşzamansız loglama; hataların izini canlı ortamda sürmek için.
Bir .NET projesi nasıl ilerliyor
- 01
Ücretsiz keşif görüşmesi
30 dkSistemi kimlerin hangi rollerle kullanacağını, mevcut altyapınızı ve aklınızdaki bütçeyi konuşuyoruz.
- 02
Yazılı kapsam ve teklif
Varlıkları, rolleri ve izinleri, entegrasyonları ve hangi katmanın neyi üstleneceğini yazıya döküyoruz.
- 03
Haftalık sürümler
Her hafta çalışan bir sürüm teslim ediyoruz; yeni ekranları ve uç noktaları kendi rollerinizle deniyorsunuz.
- 04
Test ve yayın
Senior QA sürümü yayından önce test ediyor; migration’lar ve başlangıç verisi canlı ortama kontrollü biçimde uygulanıyor.
- 05
Yayından sonraki 30 gün
30 günBu sürede çıkan hataları ücretsiz düzeltiyoruz; ardından aylık bakımla devam edebilirsiniz.
Süre ve bütçe aralıkları özel yazılım geliştirme ve fiyatlar sayfalarımızda yayında; bu sayfa da aynı rakamlara dayanıyor.
.NET hakkında sık sorulanlar
ABP için lisans ücreti ödemem gerekir mi?
ABP’nin açık kaynaklı bir sürümü ve ücretli ticari bir sürümü var. Müşteri projemizde yalnızca açık kaynaklı paketleri kullandık; ticari sürüme ihtiyaç olmadı.
.NET için Windows sunucu gerekir mi?
Hayır. Güncel .NET Linux’ta çalışıyor. Müşteri projemizde her API host’u ve veritabanı güncelleme aracı ayrı bir Linux tabanlı Docker imajı olarak paketleniyor.
Yönetim panelini ve mobil uygulamayı da siz mi geliştiriyorsunuz?
Evet. Aynı projede yönetim panelini Vite ve React ile, mobil uygulamayı Expo ile geliştirdik; ikisi de .NET API’lerine bağlanıyor.
Proje bitince elimde ne kalır?
Yazılımı süresiz kullanma lisansı ve dokümantasyon. Kaynak kodun size devri ek ücretle mümkün; bu ücret teklifte ayrıca belirtilir.