ASP.NET MVC (Model View Controller) Framework

MVC Nedir?

Model View Controller (MVC), yazılım geliştirme de kullanılan bir mimari tasarımdır. Bu tasarım modeli yüklü ve karmaşık verinin sunulduğu uygulamalarda veri gösteriminin soyutlanması esasına dayanır. 

MVC’yi şu şekilde tanımlayabiliriz. 

  • Model (Veri Tabanı): Geliştirilen yazılım projesinde kullanılacak olan verilerin saklandığı alandır. Veya uygulamanın temel bileşenlerini tanımlandığı alandır. Örneğin bir adres listesi uygulaması oluşturduğumuzu düşünelim. O halde model nesnemizin içinde adres listemizin görev başlığı ve adres bilgilerimizi sıraladığımız listeler gibi ana bileşenlerin tanımları model nesnemiz içerisinde yer alır.
namespace WebApplication1.ViewModels
{
    public class Address
    {
        public string Name { get; set; }
        public string Street { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public string PostalCode { get; set; }
    }
}
  • View (Kullanıcı Arayüzü): Uygulamanın kullanıcıyla doğrudan etkileşime geçtiği alandır. Yani tasarım arayüzünü geliştirdiğimiz kısımdır. Oluşturduğumuz adres listemizde ki dataları kullanıcının görünümüne aktardığımız alanı kapsar.
@model WebApplication1.ViewModels.Address

<h2>Contact</h2>
<address>
    @Model.Street<br>
    @Model.City, @Model.State @Model.PostalCode<br>
    <abbr title="Phone">P:</abbr> 425.555.0100
</address>
  • Controller (Uygulama Mantığı): Veri tabanı ile kullanıcı arayüzü arasında bir bağlantı görevi görür. Bu nesne, kullanıcıdan aldığı verinin yorumlanıp karar verildikten sonra veri tabanına işlendiği bölümdür. Kısacası uygulamanın beynidir. Adres listemizde ki veriler üzerinde eylemler gerçekleştirdiğimiz alanı kapsar.
public IActionResult Contact()
{
    ViewData["Message"] = "Your contact page.";

    var viewModel = new Address()
    {
        Name = "Microsoft",
        Street = "One Microsoft Way",
        City = "Redmond",
        State = "WA",
        PostalCode = "98052-6399"
    };

    return View(viewModel);
}

MVC’nin Web Sitesi Üzerinde Çalışma Mantığı

Web sitesine giren kullanıcı talepte bulunduğu an Controller nesnesi eylemi gerçekleştirebilmek ve verileri işlemek için Model nesnesi ile iletişime geçer. Daha sonrasında Controller, View nesnesi üzerinden görüntülenecek görüntüyü seçer ve onu Model nesnesi ile destekler. Son olarak View nesnesi modeldeki verilere dayalı olarak son sayfayı oluşturur.

ASP.NET MVC

Ekim 2007’de Microsoft Core ASP.NET platformunu üzerine inşa edilen yeni bir MVC geliştirme modelini açıkladı. Bu model, net bir şekilde ASP.NET Web Form eleştirilerine bir tepki olarak tasarlanmıştır. Aşağıda detaylıca belirttiğim kavramlar ASP.NET MVC’nin Web Form sınırlamalarını keskin bir şekilde nasıl aştığını göstermektedir.

ASP.NET MVC Mimarisi

MVC mimari modeli ile ASP.NET MVC çerçeveleri arasında ayrım yapmak önemlidir. Yukarıda da belirttiğim gibi MVC bir yazılım mimari modelidir. Aslında MVC modeli yeni bir model değildir. Fakat günümüzde Web Uygulamalarında popülerlik kazanarak adını duyurdu. Baktığımız zaman bu modelin temelleri 1978’de XEROX PARC’daki SmallTalk projesine dayalıdır.

ASP.NET MVC’de yönlendirme modülünün rolü.

ASP .NET MVC modeli iki ana özellikle karşımıza çıkar.

  • MVC uygulamasıyla kullanıcı etkileşimleri doğal bir döngüye sahiptirler. Kullanıcı bir işlem yaptığında, uygulama yanıt olarak data modelini değiştir ve kulanıcıya güncel bir görünüm sunar. Döngü bu şekilde kendini tekrar eder.
  • Bir web uygulaması birkaç teknolojinin kombininden oluşur. (Database, HTML, Dinamik kodlar vb.) Bu nedenle web uygulamaları bir dizi katmanlardan veya bölümlerden oluşur. Tüm bu kombinasyonlardan ortaya çıkan desenler MVC mimarisi içerisinde doğal olarak eşleşirler.

Aslında, ASP.NET MVC, özellikle Web uygulamaları için bizlere uygun olan modern bir MVC modeli varyantını uygular. Microsoft ASP.NET MVC Framework ile, MVC modelini benimseyerek Ruby on Rails gibi benzer platformları ve MVC modelini .NET dünyasının ana akımı haline getirmiştir.

ASP.NET MVC Pattern

https://dotnet.microsoft.com/apps/aspnet/mvc