İçeriğe geç

ASP.NET Core MVC Hakkında Bilmeniz Gerekenler

Anasayfa›

ASP.NET Core MVC Hakkında Bilmeniz Gerekenler

ASP.NET Core MVC, C# ve .NET kullanarak sunucu tarafında çalışan web uygulamaları geliştirmeyi sağlayan açık kaynaklı ve platformlar arası bir web framework’üdür. Model-View-Controller tasarım kalıbını temel alarak veri, kullanıcı arayüzü ve istek yönetimi sorumluluklarını birbirinden ayırır.

ASP.NET Core MVC; kurumsal web uygulamaları, yönetim panelleri, müşteri portalları, e-ticaret sistemleri ve veri tabanı bağlantılı uygulamalar geliştirmek için kullanılabilir. Windows, Linux ve macOS üzerinde geliştirilebilir; Linux veya Windows sunucularında, container ortamlarında ve bulut platformlarında çalıştırılabilir.

Kısaca: MVC bir programlama dili veya tek başına bir framework değil, tasarım kalıbıdır. ASP.NET Core MVC ise bu kalıbı ASP.NET Core üzerinde uygulayan web geliştirme framework’üdür.

ASP.NET Core MVC Nedir?

ASP.NET Core MVC, HTTP isteklerini karşılayan, uygulama verilerini işleyen ve HTML kullanıcı arayüzleri oluşturan web uygulamaları geliştirmek için kullanılır. Uygulamanın sorumluluklarını Model, View ve Controller katmanlarına ayırarak kodun daha anlaşılır, test edilebilir ve sürdürülebilir olmasına yardımcı olur.

ASP.NET Core’un temel özellikleri arasında yerleşik dependency injection, middleware tabanlı istek hattı, yapılandırma sistemi, loglama, routing, model binding, doğrulama ve güvenlik bileşenleri bulunur. MVC bu altyapının üzerinde controller ve view tabanlı uygulama geliştirme yaklaşımı sunar.

MVC Nedir?

MVC, Model-View-Controller kelimelerinin baş harflerinden oluşan bir yazılım tasarım kalıbıdır. Temel amacı iş mantığı, veri ve kullanıcı arayüzü sorumluluklarını birbirinden ayırmaktır.

  • Model: Uygulama verilerini, kurallarını ve iş alanı kavramlarını temsil eder.
  • View: Kullanıcıya gösterilecek HTML arayüzünü üretir.
  • Controller: HTTP isteklerini karşılar, gerekli uygulama işlemlerini çağırır ve hangi yanıtın döneceğini belirler.

MVC kalıbı yalnızca web geliştirmeye özgü değildir. Farklı uygulama türlerinde benzer sorumluluk ayrımı uygulanabilir. Ancak ASP.NET Core MVC özellikle web uygulamaları ve HTTP istekleri için geliştirilmiş bir framework’tür.

ASP.NET Core MVC Nasıl Çalışır?

  1. Tarayıcı uygulamaya bir HTTP isteği gönderir.
  2. İstek ASP.NET Core middleware hattından geçer.
  3. Routing sistemi isteği uygun controller ve action ile eşleştirir.
  4. Model binding, route, query string veya form verilerini action parametrelerine dönüştürür.
  5. Controller gerekli servisleri ve iş mantığını çağırır.
  6. Controller bir View, yönlendirme, dosya, durum kodu veya başka bir sonuç döndürür.
  7. View kullanılıyorsa Razor motoru model verisini HTML çıktısına dönüştürür.
  8. Oluşan HTTP yanıtı istemciye gönderilir.

Model Katmanının Sorumlulukları

Model, yalnızca veri tabanı tablosunun C# sınıfı biçimindeki karşılığı değildir. Domain modelleri, veri aktarım nesneleri, doğrulama kuralları ve belirli bir ekrana veri taşıyan ViewModel sınıfları farklı amaçlarla kullanılabilir.

Model katmanıyla ilişkili başlıca görevler:

  • İş alanındaki nesneleri ve ilişkileri temsil etmek
  • Veri doğrulama kurallarını tanımlamak
  • Servis ve veri erişim katmanlarıyla çalışmak
  • Controller ile View arasında uygun veri yapısını taşımak

Karmaşık iş mantığını controller içinde toplamak yerine uygun servis veya domain katmanlarına ayırmak daha sürdürülebilir bir yapı oluşturur.

View Katmanının Sorumlulukları

View, kullanıcıya gönderilecek HTML arayüzünü oluşturur. ASP.NET Core MVC’de View dosyalarında Razor söz dizimi kullanılır. Razor, HTML ile C# ifadelerinin kontrollü biçimde birlikte kullanılmasını sağlar.

View katmanında şu yapılar kullanılabilir:

  • Layout ile ortak sayfa şablonları
  • Partial View ile tekrar kullanılabilir görünüm parçaları
  • View Component ile kendi işleme mantığı bulunan arayüz bileşenleri
  • Tag Helper ile HTML öğelerine sunucu tarafı davranış ekleme
  • ViewModel ile yalnızca arayüzün ihtiyaç duyduğu verileri taşıma

View içinde veri tabanı erişimi veya karmaşık iş mantığı bulunmamalıdır. Görünümün temel sorumluluğu sunumdur.

Controller Katmanının Sorumlulukları

Controller, gelen HTTP isteğini karşılayan action metodlarını içerir. İstek verisini alır, gerekli servisleri çağırır ve uygun sonucu döndürür.

public class ProductsController : Controller
{
    private readonly IProductService _productService;

    public ProductsController(IProductService productService)
    {
        _productService = productService;
    }

    public async Task<IActionResult> Index()
    {
        var products = await _productService.GetAllAsync();
        return View(products);
    }
}

Controller’ın ince tutulması önerilir. İş kuralları controller içinde büyütülmek yerine servis veya domain katmanına taşınmalıdır.

ASP.NET Core MVC’nin Temel Özellikleri

Routing

Routing, URL ile controller action arasındaki eşleşmeyi belirler. Conventional routing merkezi kurallarla, attribute routing ise controller ve action üzerindeki niteliklerle tanımlanabilir.

Model Binding ve Validation

Model binding; form, route ve query string verilerini C# nesnelerine dönüştürür. Data Annotation veya özel doğrulama yöntemleriyle gelen verinin kurallara uygunluğu kontrol edilebilir.

Dependency Injection

ASP.NET Core yerleşik dependency injection container sunar. Servisler yaşam süreleriyle birlikte kaydedilir ve ihtiyaç duyan sınıflara constructor üzerinden aktarılabilir.

Middleware

Middleware bileşenleri HTTP istek ve yanıt hattında çalışır. Hata yönetimi, HTTPS yönlendirme, statik dosyalar, kimlik doğrulama, yetkilendirme ve routing gibi süreçler bu hat üzerinde yapılandırılır.

Razor View Engine

Razor, sunucu tarafında dinamik HTML oluşturmayı sağlar. Razor dosyaları genellikle .cshtml uzantısını kullanır.

Filters

Authorization, action, result ve exception filter türleri belirli MVC aşamalarında ortak davranışların uygulanmasını sağlar. Her ortak işlem için filter kullanmak gerekmez; bazı ihtiyaçlarda middleware daha uygun olabilir.

ASP.NET Core MVC Projesi Nasıl Oluşturulur?

.NET SDK kurulduktan sonra CLI üzerinden yeni bir MVC projesi oluşturulabilir:

dotnet new mvc -n MyMvcApp
cd MyMvcApp
dotnet run

Oluşturulan projede genellikle Controllers, Models, Views ve wwwroot klasörleri bulunur. Modern ASP.NET Core sürümlerinde servisler ve HTTP hattı çoğunlukla Program.cs içinde yapılandırılır.

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllersWithViews();

var app = builder.Build();

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

ASP.NET Core MVC ile Veritabanı İşlemleri

ASP.NET Core MVC uygulamalarında Entity Framework Core yaygın biçimde kullanılan bir ORM çözümüdür. C# sınıfları ile ilişkisel veri tabanı tabloları arasında eşleme kurar; sorgu, ekleme, güncelleme ve silme işlemlerini destekler.

Üretim uygulamalarında doğrudan entity nesnelerini her ekrana taşımak yerine ihtiyaca göre ViewModel veya DTO kullanmak; veri erişimini controller’dan ayırmak ve async metotlardan yararlanmak daha güvenli ve sürdürülebilir bir yapı sağlar.

ASP.NET Core MVC ile Web API Arasındaki Fark

Özellik MVC View uygulaması ASP.NET Core Web API
Temel çıktı Sunucuda oluşturulan HTML Genellikle JSON ve HTTP durum kodları
İstemci Doğrudan web tarayıcısı SPA, mobil uygulama veya başka servis
View kullanımı Razor View kullanılabilir Genellikle View kullanılmaz
Kullanım Portal, yönetim paneli, kurumsal web uygulaması REST API ve sistem entegrasyonu

Aynı ASP.NET Core uygulaması hem View döndüren MVC controller’ları hem de API endpoint’leri içerebilir. Proje yapısı, istemci mimarisi ve ekip ihtiyaçlarına göre seçilmelidir.

ASP.NET Core MVC ile Razor Pages Arasındaki Fark

Razor Pages, sayfa odaklı sunucu tarafı uygulamalar için ASP.NET Core içinde sunulan başka bir yaklaşımdır. Her sayfa genellikle bir .cshtml dosyası ve PageModel sınıfıyla yönetilir. MVC ise controller ve action odaklıdır.

  • Sayfa merkezli ve görece basit uygulamalarda Razor Pages daha doğrudan olabilir.
  • Birden fazla görünüm ve karmaşık istek akışının yönetildiği uygulamalarda MVC daha uygun olabilir.
  • JSON API ağırlıklı projelerde Web API veya minimal API yaklaşımı değerlendirilebilir.

ASP.NET MVC 5 ile ASP.NET Core MVC Arasındaki Farklar

Özellik ASP.NET MVC 5 ASP.NET Core MVC
Platform .NET Framework ve ağırlıklı olarak Windows Modern .NET; Windows, Linux ve macOS
Açık kaynak Klasik ASP.NET ekosistemi Açık kaynak ve platformlar arası
Bağımlılık yönetimi Farklı yaklaşımlar gerekebilir Yerleşik dependency injection
İstek hattı System.Web tabanlı yapı Modüler middleware hattı
Dağıtım Çoğunlukla IIS ve Windows IIS, Kestrel, reverse proxy, container ve bulut
Geliştirme durumu Mevcut eski uygulamalarda kullanılır Yeni ve aktif geliştirilen platform

ASP.NET Core, ASP.NET’in “e-ticaret sürümü” veya bir bulut ortamı değildir. Microsoft’un modern, açık kaynaklı ve platformlar arası web framework’üdür.

ASP.NET Core MVC Platformlar Arası Çalışır mı?

Evet. ASP.NET Core MVC, ASP.NET Core’un bir parçası olduğu için Windows, Linux ve macOS üzerinde geliştirilebilir ve çalıştırılabilir. Uygulamalar Kestrel web sunucusuyla; IIS, Nginx veya Apache gibi reverse proxy çözümlerinin arkasında ya da Docker container içinde çalıştırılabilir.

ASP.NET Core MVC Güvenliği Nasıl Sağlanır?

  • Kimlik doğrulama ve yetkilendirme politikaları uygulanmalıdır.
  • Form işlemlerinde CSRF koruması kullanılmalıdır.
  • Kullanıcı girdileri model validation ile doğrulanmalıdır.
  • Çıktı kodlama ve doğru Razor kullanımıyla XSS riski azaltılmalıdır.
  • Entity Framework sorguları parametreli biçimde kullanılmalıdır.
  • Gizli bilgiler kaynak koda veya Git deposuna eklenmemelidir.
  • HTTPS, güvenli cookie ayarları ve uygun güvenlik başlıkları kullanılmalıdır.
  • .NET, NuGet paketleri ve işletim sistemi desteklenen sürümlerde tutulmalıdır.

ASP.NET Core MVC Performansı Nasıl Artırılır?

  • Veritabanı sorgularında yalnızca gerekli alanları çekmek
  • Uygun indeksler ve sorgu planları kullanmak
  • I/O işlemlerinde async/await kullanmak
  • Memory cache veya distributed cache uygulamak
  • Yanıt sıkıştırma ve statik dosya optimizasyonu yapmak
  • Gereksiz middleware ve servis çağrılarını azaltmak
  • Log, tracing ve metriklerle darboğazları ölçmek
  • Yük testi yapmadan yalnızca tahmine göre optimizasyon yapmamak

ASP.NET Core MVC’nin Avantajları

  • C# ve modern .NET ekosistemiyle çalışması
  • Windows, Linux ve macOS desteği
  • MVC ile sorumlulukların ayrılması
  • Yerleşik dependency injection ve loglama
  • Test edilebilir mimariyi desteklemesi
  • Entity Framework Core ve Microsoft araçlarıyla entegrasyon
  • Container ve bulut dağıtımlarına uygun olması
  • Kurumsal uygulamalar için olgun araç ekosistemi

ASP.NET Core MVC’nin Dezavantajları

  • C#, HTTP, HTML, CSS ve web güvenliği gibi birden fazla konuyu öğrenmeyi gerektirir.
  • Küçük ve yalnızca API sunan projelerde MVC View yapısı gereğinden kapsamlı olabilir.
  • Sürüm yükseltmelerinde kırılan API ve paket uyumluluğu kontrol edilmelidir.
  • Yanlış katmanlama, aşırı büyük controller ve gereksiz soyutlama kodun karmaşıklaşmasına yol açabilir.
  • Sunucu tarafında HTML üretimi, tüm kullanıcı deneyimi gereksinimleri için tek başına yeterli olmayabilir.

2026’da Hangi .NET Sürümü Kullanılmalı?

Yeni ve uzun ömürlü kurumsal projelerde desteklenen bir LTS sürümü tercih edilmelidir. Ağustos 2026 itibarıyla .NET 10 LTS desteklenmektedir; .NET 8 LTS de Kasım 2026’ya kadar destek döngüsündedir. Sürüm seçerken yalnızca framework değil kullanılan NuGet paketleri, hosting ortamı ve kurumun güncelleme planı birlikte değerlendirilmelidir.

“.NET Core” adı .NET 5’ten itibaren “.NET” olarak sadeleştirilmiştir. Buna rağmen web framework’ünün güncel adı ASP.NET Core olarak kullanılmaya devam eder.

ASP.NET Core MVC Öğrenmek İçin Neler Bilinmeli?

  1. C# söz dizimi ve nesne yönelimli programlama
  2. HTML, CSS ve temel JavaScript
  3. HTTP istekleri, yanıtları ve durum kodları
  4. MVC tasarım kalıbı
  5. Routing, model binding ve validation
  6. Dependency injection ve middleware
  7. SQL ve Entity Framework Core
  8. Kimlik doğrulama, yetkilendirme ve web güvenliği
  9. Test, loglama ve dağıtım süreçleri

Uygulamalı öğrenme programı için .NET Core MVC Eğitimi sayfasını inceleyebilirsiniz. C# ve ASP.NET programlarının tamamına .NET eğitimleri üzerinden ulaşabilirsiniz.

Veri erişim katmanını derinleştirmek isteyen ekipler Entity Framework Core Eğitimi; dağıtık mimariye geçmek isteyenler ise .NET Microservices Eğitimi programını değerlendirebilir.

Sık Sorulan Sorular

ASP.NET Core MVC nedir?

ASP.NET Core MVC, C# ve .NET kullanarak Model-View-Controller tasarım kalıbına dayalı web uygulamaları geliştirmeyi sağlayan açık kaynaklı ve platformlar arası bir framework’tür.

MVC nedir?

MVC; Model, View ve Controller bileşenlerinden oluşan bir tasarım kalıbıdır. Veri ve iş mantığını, kullanıcı arayüzünü ve istek yönetimini birbirinden ayırmayı amaçlar.

ASP.NET Core MVC yalnızca Windows’ta mı çalışır?

Hayır. ASP.NET Core MVC Windows, Linux ve macOS üzerinde geliştirilebilir ve çalıştırılabilir. IIS, Kestrel, Nginx, container ve bulut ortamlarında dağıtılabilir.

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

MVC uygulamaları çoğunlukla Razor View kullanarak HTML üretir. Web API ise genellikle JSON ve HTTP durum kodları döndürerek SPA, mobil uygulama veya diğer servislerle haberleşir.

MVC mi Razor Pages mi kullanılmalı?

Sayfa odaklı basit uygulamalarda Razor Pages daha doğrudan olabilir. Controller ve action tabanlı karmaşık akışlarda MVC tercih edilebilir. Seçim projenin mimarisine ve ekip deneyimine göre yapılmalıdır.

ASP.NET Core MVC ücretsiz mi?

Evet. ASP.NET Core açık kaynaklıdır ve framework için lisans ücreti gerektirmez. Hosting, bulut, veri tabanı ve kullanılan üçüncü taraf hizmetler ayrıca maliyet oluşturabilir.

Kurumsal ASP.NET Core MVC Eğitimi

BlueMark Academy’nin kurumlara ve firmalara yönelik .NET Core MVC Eğitimi; proje yapısı, controller, model, view, routing, dependency injection, middleware, Entity Framework Core, CRUD işlemleri ve API geliştirme gibi temel başlıkları uygulamalı olarak ele alır.

Ekibinizin seviyesine uygun C#, ASP.NET Core, Entity Framework ve mikroservis programlarını görmek için .NET eğitimleri sayfasını inceleyebilir; kurumunuza özel program için BlueMark Academy’den bilgi alabilirsiniz.

Son güncelleme: Ağustos 2026.