ekrem özer

her yerde olan şeyler.

Asp.NET MVC Nedir?

Herkese merhaba bu yazımda kısaca Asp.NET MVC nedir ona değineceğim.

Model, View, Controller kelimelerinin baş harflerinden oluşan dinamik web uygulamarı geliştirmemize yarayan bir web uygulamaları arayüzüdür. Microsoft tarafından 2007 yılında geliştirilmeye başlanmış olup gelişme süreçleri aşağıdaki gibidir.

Tarih Versiyon
10 Aralık 2007 ASP.NET MVC  CTP
13 Mart 2009 ASP.NET MVC 1.0
16 Aralık 2009 ASP.NET MVC 2  RC
4 Şubat 2010 ASP.NET MVC 2 RC 2 [13]
10 Mart 2010 ASP.NET MVC 2
6 Ekim 2010 ASP.NET MVC 3 Beta
9 Kasım 2010 ASP.NET MVC 3 RC
10 Aralık 2010 ASP.NET MVC 3 RC 2
13 Ocak 2011 ASP.NET MVC 3
20 Eylül 2011 ASP.NET MVC 4 Developer Önizleme
15 Şubat 2012 ASP.NET MVC 4 Beta
31 Mayıs 2012 ASP.NET MVC 4 RC
15 Ağustos 2012 ASP.NET MVC 4
30 Mayıs 2013 ASP.NET MVC 4 4.0.30506.0
26 Haziran 2013 ASP.NET MVC 5 Önizleme
23 Ağustos 2013 ASP.NET MVC 5 RC 1
17 Ekim 2013 ASP.NET MVC 5
17 Ocak 2014 ASP.NET MVC 5.1
10 Şubat 2014 ASP.NET MVC 5.1.1
4 Nisan 2014 ASP.NET MVC 5.1.2
22 Haziran 2014 ASP.NET MVC 5.1.3
1 Temmuz 2014 ASP.NET MVC 5.2.
28 Ağustos 2014 ASP.NET MVC 5.2.2
9 Şubat 2015 ASP.NET MVC 5.2.3
12 Şubat2018 ASP.NET MVC 5.2.4
2 Mayıs 2018 ASP.NET MVC 5.2.5
11 Mayıs 2018 ASP.NET MVC 5.2.6
29 Kasım 2018 ASP.NET MVC 5.2.7

Visual Studio 2014 de Asp.NET MVC 4.0 yüklü gelmekledir. Asp.NET MVC nin son sürümlerini yüklemek içinse http://www.asp.net/mvc/tutorials/mvc-5 adresini ziyaret edebilirsiniz.

Asp.NET MVC Çalışma Sistemi

MVC Framework'ün 3 katmanlı olduğundan bahsetmiştik(Model, View ve Controller) Şimdi basit bir uygulama ile bu mimariyi inceleyelim.

İlk olarak Visual Studioda bir MVC uygulaması açıyoruz (bende 4.0 sürümü yüklü). Projemin adını "Asp.NET MVC Giriş" yapıyorum.

Ardından karşımıza gelen Project Template penceresinden her hangi bir proje şablonu seçiyoruz. Ben Internet Application'ı seçtim.

Projemiz oluştuktan sonra Solition Explorer'da oluşan klasörlerimiz hakkında kısaca bilgi vermek gerekirse;

App_Data Veritabanı dosyalarının yer aldığı klasör.
App_Start Uygulamamıza ilgili bazı yapısal ayarların işlenmesini sağlayan sınıfları barındıran ve uygulamamızın denetim masası denilebilecek klasördür.
Content CSS ve imaj gibi JavaScript dosyaları haricinceki içeriklerin yer aldığı klasördür.
Controllers Kullanıcıdan gelen isteklere göre  Model ve View üzerinden gerçekleştirilecek işlemleri yönetir.
Filters Filter kodları burada bulunur. Filterlar detaylı özelliklerdir. İleri derslerde değiniyor olacağız.
Images Uygulamamıza ait resimleri koyabileceğimiz klasördür.
Models Uygulamadaki verileri ve yapacağı davranışları yönetir.
Script JavaScript ve Ajax dosyalarının yer aldığı klasördür.
Views Son kullanıcı tarafından görüntülenecek dosyaların yer aldığı klasördür.

Models, View, Controller klasörleri, MVC Framework'ün ana yapısını oluşturmaktadır. Bu yapı sayesinde uygulama üç kısım halinde parçalara bölünüp yürütülebilir. Her bir katmanda yürütülen işler diğer bir katmandan bağımsız halde gerçekleştirilebilir.

Model: Uygulamanın veri işleme ve yorumlama kurallarını barındırır. Web uygulamasının verilerini ve yapacağı davranışları yönetir. Yaptığı işlemlerin sonuçlarını Controller'a bildirmekle yükümlüdür. Kullanıcıdan gelen isteklere cevap verir. Models klasörü içerisinde veritabanı işlermlerini yürütmek için gerekli sorgular ve kodlar mevcuttur.

View: Kullanıcı arabirimini barındırır. Son kullanıcıya verilerin nasıl sunulacağı bu bölümde tasarlanır. Kullanıcının isteklerini Controller'a iletir. Views içerisinde oluşturulan klasörlerden Home ve Shared klasörleri MVC nin içinde yer alan standart klasörlerdir.

Home klasörünün içinde genellikle index sayfası yer alırken, Shared klasörünün içerisinde ise standar olarak Layout sayfası bulunmaktadır. Layout; Asp.NET içerisinde bulunanan MasterPage görevini yapmaktadır. Layot ile ilgili tanımlama  _ViewStart.cshtml içerisinde yapılmaktadır. Örnek tanımlama aşağıdaki gibidir.

@{
 Layout = "~/Views/Shared/_Layout.cshtml";
}

Controller: Kullanıcının yapacağı girdilere göre bu iki katmanı doğru çalıştırmakla yükümlüdür Kullanıcı sayfadan bir istekte bulunduğunda (request, input) Controller bunu denetler ve Modelden gelen işlemleri yürütür. Daha sonra View'da son kullanıcıya isteğinin karşılığını gösterir.

Controller bir denetçi gibi çalışır. Kullanıcının fare ve klavye girişlerimi yorumlar. Kullanıcıdan gelen isteklere göre uygulamanın hangi davranışları sergileyeceğini burada tanımlanır. Kulanıcıya verilecek cevap için arayüzü belirler. Model ve View bileşenlerinin yapacakları işlevleri belirler.

Controller klasörü içerisinde Account işlemleri için kullanacağımız AccountController adlı bir sınıf ve ana sayfada gerçekleştirilecek işlermler için kullanacağımız HomeController adlı bir sınıf yer alır. Bu sınıflar içerisinde gerçekleştirilecek işlemlere dair metotlar yer alır.

Bu metotlar ile kullanıcı tarafından gelen isteklere karşılık gerekli işlemler yürütülür ve Model ve View katmanları yönlendirilir.