ASP.NET CORE NEDİR?
2002 yılında ASP.NET çıktığında Microsoft'un Java EE dünyasına verdiği güçlü cevaptı — ancak Windows Server'a, IIS'e ve System.Web kütüphanesine sıkı sıkıya bağlıydı. 2016'da Microsoft platformu sıfırdan yeniden yazma kararı aldı; yeni isim ASP.NET Core. Eski sürümle paylaştığı tek şey isimdi; mimari, motor ve hedef ortam tamamen değişti. Bugün Stack Overflow developer anketlerinde en sevilen web framework'leri arasında üst sıralarda yer alıyor; TechEmpower benchmark'larında ise milyon istek/saniye seviyelerine ulaşan sayılı çerçeveden biri. C# dilini öğrenen veya çağdaş kurumsal bir projeye dahil olan geliştiricinin ASP.NET Core ile karşılaşma olasılığı oldukça yüksek. Bu yazı kavramı sıfırdan ele alıp temel bileşenleri, mimari kararları ve hangi senaryoda tercih edildiğini anlatmayı amaçlıyor.
ASP.NET'ten ASP.NET Core'a Dönüşüm
Klasik ASP.NET 14 yıl boyunca Microsoft web yığınının omurgasıydı. Web Forms, MVC ve Web API gibi alt çerçeveleri vardı; hepsi System.Web.dll üzerine kuruluydu ve IIS dışında bir sunucuda çalışmıyordu. Windows lisansı zorunluydu, hot-reload yoktu, geliştirme döngüsü ağırdı.
ASP.NET Core farklı bir mühendislik kararıyla doğdu: ne IIS'e ne Windows'a ne de System.Web'e bağımlı bir framework. Sıfırdan modüler, hafif, cross-platform ve açık kaynaklı yazıldı. Kod tabanı GitHub'da açık; her büyük .NET sürümüyle birlikte yıllık ritimde yenileniyor.
Bugün ".NET 8" veya ".NET 9" gibi bir sürüm dendiğinde ASP.NET Core o sürümle birlikte gelen bütünleşik bir parçadır. Sürüm numarası artık ayrı tutulmaz; .NET runtime ile aynı sürümü kullanır.
Cross-Platform Çalışma ve Açık Kaynak Yapı
ASP.NET Core uygulamaları Windows, Linux ve macOS üzerinde aynı kod tabanından çalışır. Bir geliştirici macOS'ta yazdığı API'yi Linux container'a deploy edebilir; üretim ekibi tarafsız Docker imajları üzerinden hizmet verebilir. Bu esneklik bulut maliyet stratejilerini doğrudan etkiler — Linux sunucular Windows Server'a göre daha ucuza ve daha esnek ölçeklenir.
Framework'ün resmi öğrenim ve referans kaynağı platformun resmi dokümantasyonu üzerinden takip edilir; tüm API'ler, sürüm farklılıkları ve örnek projeler bu kaynak üzerinden ilerler. Topluluk ise NuGet paket ekosistemi ve GitHub deposu etrafında büyür.
Kestrel Web Sunucusu
Kestrel, ASP.NET Core ile birlikte gelen yerleşik web sunucusudur. Cross-platform çalışır; HTTP/1.1, HTTP/2 ve HTTP/3 protokollerini destekler. Tek başına internete açık olarak çalıştırılabilir, ancak pratik kurulumda arkasına bir reverse proxy konuşlandırılır.
Linux'ta Nginx, Windows tarafında IIS, bulutta Azure Front Door veya Application Gateway bu rolü üstlenir. Bu mimari load balancing, TLS terminasyonu ve statik dosya optimizasyonunu proxy'ye bırakır; Kestrel saf uygulama isteklerini işler. Sonuç: bağımsız benchmark'larda üst sıralarda yer alan yüksek throughput.

Middleware Pipeline ve İstek Akışı
ASP.NET Core'da gelen her HTTP isteği bir middleware boru hattından geçer. Pipeline Program.cs içinde sıralı şekilde tanımlanır:
- UseHttpsRedirection — HTTPS yönlendirmesi
- UseStaticFiles — statik dosya servis katmanı
- UseRouting — endpoint eşleme
- UseAuthentication / UseAuthorization — kimlik ve yetki
- MapControllers / MapRazorPages — son katman
Sıra önemlidir. Authorization, Authentication'dan önce çağrılırsa kullanıcı kimliği henüz çözülmemiş olur; statik dosya katmanı routing'ten sonra gelirse her statik istek gereksiz yere endpoint kararı bekler. Pipeline kuralı net: her middleware bir sonrakini çağırır veya isteği kısa devre yapar.
Razor Pages, MVC ve Minimal API
ASP.NET Core üç temel uygulama modeli sunar. Hepsi aynı middleware pipeline'ı paylaşır; yalnızca yazım stili farklıdır.
- Razor Pages: sayfa odaklı, form ağırlıklı web uygulamaları için. Her sayfanın kendi
.cshtmlview'ı vePageModelsınıfı vardır. Küçük-orta projeler için en az gürültülü seçenektir. - MVC: controller, action, view ayrımı net olan klasik Model-View-Controller deseni. Büyük ekipte sorumluluk bölünmesi için güçlü.
- Minimal API: .NET 6 ile gelen sadeleştirilmiş yaklaşım.
app.MapGet("/users", () => users)gibi tek satırlık endpoint tanımları. Mikroservis ve hafif HTTP API'leri için ideal.
Aynı uygulama içinde üçü birden kullanılabilir. Pratikte sık görülen kalıp: ana sayfa Razor Pages, raporlama MVC, public REST API Minimal API.
Dependency Injection ve Yapılandırma
ASP.NET Core yerleşik bir dependency injection container ile gelir. Üçüncü parti DI kütüphanesi (Autofac, Ninject vb.) eklemeye gerek yoktur. Servisler üç ana ömür modeliyle kaydedilir: Singleton, Scoped ve Transient. Singleton uygulama ömrü boyunca tek instance, Scoped her HTTP isteği için ayrı, Transient her enjeksiyonda yeni nesne üretir.
Yapılandırma katmanı da yerleşiktir. appsettings.json, ortam değişkenleri, komut satırı argümanları, kullanıcı sırları (user secrets) ve Azure Key Vault gibi kaynaklar tek bir IConfiguration arayüzü üzerinden okunur. Ortam ayrımı için appsettings.Development.json ve appsettings.Production.json otomatik birleştirilir.

Performans ve Kullanım Senaryoları
ASP.NET Core, bağımsız performans benchmark'larında JavaScript, Java ve Go ekosistemlerindeki popüler framework'lerin önünde sonlanıyor. Bu performans hem mimariden hem de AOT (Ahead-of-Time) derleme desteğinden kaynaklanıyor. Tipik kullanım alanları:
- Yüksek trafikli e-ticaret ve içerik siteleri
- REST ve GraphQL API'leri, mikroservisler
- SignalR ile real-time uygulamalar (canlı sohbet, oyun, IoT panoları)
- Blazor ile interaktif web istemcileri
- Arka plan worker servisleri ve scheduled job'lar
Çerçeveyi uygulamalı projelerle öğrenmek isteyenler için ASP.NET Core eğitimi middleware'den minimal API'lere kadar pratik üzerinden ilerler. Önceden C# bilgisi gerekir; dile yabancı olanlar temel C# eğitimi ile başlayabilir.
Hangi Durumda Tercih Edilmez?
ASP.NET Core her senaryo için doğru tercih değildir. Çok küçük bir statik site için Hugo veya Astro gibi static site generator yeterli olur. Mevcut kod tabanı tamamen klasik ASP.NET üzerine kuruluysa, taşıma maliyeti kısa vadeli faydadan büyük olabilir. Ekipte C# bilen kimse yoksa öğrenme eğrisi maliyetlidir; mevcut Node.js veya Python yığınında kalmak daha mantıklı olabilir.
Önemli olan teknolojiyi prestij meselesi olarak değil, ihtiyaca uygun bir araç olarak değerlendirmektir. ASP.NET Core, .NET tarafındaki çağdaş, hızlı ve cross-platform web tarafının resmi adıdır — bu çerçevede ele alındığında uzun ömürlü, iyi dökümante edilmiş ve sektörde geniş kullanım bulan bir seçenektir.



