ASP.NET CORE NEDİR?

Veri Akademi8 dk okuma
Üç boyutlu .NET altıgen logo formu, polished cilalı yüzey, beyaz arka plan üzerinde mor tonlarda

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.

1. 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.

2. 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.

3. 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.

Üç boyutlu beş bloklu middleware pipeline modeli, zincirleme dikdörtgenler arasında akan istek oku

4. 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.

5. 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 .cshtml view'ı ve PageModel sı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.

6. 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.

Üç boyutlu üç katmanlı dikey server tower modeli, hız çizgileri ile yüksek throughput görseli

7. 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.

8. 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.

Sıkça Sorulan Sorular

ASP.NET Core ile klasik ASP.NET MVC arasındaki fark nedir?

Klasik ASP.NET MVC sadece Windows üzerinde, IIS ve System.Web bağımlılığıyla çalışır. ASP.NET Core ise sıfırdan yeniden yazılmıştır; Windows, Linux ve macOS üzerinde Kestrel ile bağımsız çalışır, modülerdir, açık kaynaktır ve performans açısından çok daha hızlıdır. Aynı isimleri taşısalar da tamamen farklı framework'lerdir.

.NET 8 veya .NET 9 ile ASP.NET Core ilişkisi nedir?

ASP.NET Core artık .NET sürümleriyle birlikte yayımlanır. .NET 8 dendiğinde ASP.NET Core 8.0 ile gelir; ayrı sürüm numarası tutulmaz. Microsoft her Kasım ayında yeni .NET sürümü yayımlar, çift sayılı sürümler LTS (uzun dönem destek) olarak işaretlenir. Üretim projelerinde LTS sürümleri tercih edilir.

Razor Pages, MVC ve Minimal API'den hangisini seçmeliyim?

Sayfa odaklı küçük-orta web uygulaması için Razor Pages, klasik controller-action ayrımı ve büyük ekipte sorumluluk bölünmesi için MVC, hafif HTTP API ve mikroservisler için Minimal API uygundur. Aynı projede üçü birden kullanılabilir; aralarında felsefi rekabet değil, kullanım amaçlı bölünme vardır.

Kestrel'in arkasına neden Nginx veya IIS koyulur?

Kestrel uygulama isteklerini hızla işlemek için optimize edilmiştir, ancak TLS yönetimi, statik dosya servis, load balancing ve DDoS koruması gibi görevler reverse proxy'ye bırakılır. Linux'ta Nginx, Windows'ta IIS, bulutta Application Gateway veya Front Door bu rolü üstlenir. Üretim ortamında doğrudan Kestrel'i açık bırakmak önerilmez.

ASP.NET Core öğrenmek için önce ne bilmem gerekir?

Temel düzeyde C# bilgisi ön koşuldur: sınıflar, async/await, LINQ, generics. HTTP istek-cevap modeli, JSON ve REST kavramları yardımcı olur. HTML/CSS bilgisi Razor Pages tarafı için gereklidir. Veritabanı tarafına geçildiğinde SQL ve Entity Framework Core ek olarak öğrenilir.

Blazor ve SignalR ASP.NET Core'un parçası mıdır?

Evet, ikisi de ASP.NET Core paketinin içinde gelir. Blazor C# ile interaktif web istemcisi yazmayı sağlar; Server, WebAssembly ve Hybrid varyantları vardır. SignalR ise WebSocket tabanlı real-time iletişim için kullanılır — canlı sohbet, oyun ve dashboard güncellemeleri için yaygındır. Her ikisi de ek harici paket gerektirmez.

ASP.NET Core uygulaması Docker ile nasıl deploy edilir?

Microsoft'un resmi .NET runtime imajları üzerinden multi-stage Dockerfile yazılır. İlk aşama SDK imajıyla derler, ikinci aşama daha küçük runtime imajına sadece çıktıyı kopyalar. Sonuç imaj genelde 100-200 MB arasıdır. Linux container'lar Windows'a göre daha hafif ve hızlı başlar; Kubernetes ve Azure Container Apps bu imajları doğrudan çalıştırır.