Model View Controller (Model Görünüm Kontrolü)

Eyl 06, 2013

MVC Framework (Model View Controller Framework – Model Görünüm Kontrolü Altyapısı), bir uygulamanın model, view (görünüm) ve controller (kontrol) adında üç temel katman içerisinde geliştirilmesi esasına dayanan bir tasarım kalıbıdır. Genel olarak model uygulamanın üzerinde duracağı meseleyi temsil eder ve genellikle veritabanıdır. Controller, model üzerindeki operasyonları tarif eden roldür. View ise, gerekli bilginin görünümünden sorumludur. Proje bileşenleri, bu farklı katman yapılarını kullanarak birbirlerinden bağımsız olarak geliştirilebilirler. Ayrıca açık kaynak kodlu bir yapı olduğu için uygulamanın genişletilmesi, kodların güncellenmesi ve test işlemlerinin yapılması işlemlerinde kolaylık sağlanmış olur. MVC Framework, Microsoft tarafından ASP.NET WebForm’dan sonra Web uygulamaları geliştirmek üzere sunulmuş ikinci bir uygulama geliştirme modelidir. ASP.NET MVC Framework uygulamalarının sağladığı en önemli özellikler; daha sade html içeriğe ve URL Routing (URL yönlendirme) ile daha anlaşılabilir URL adreslerine sahip, test edilebilir, kolay erişilebilir uygulamalar tasarlanabilmesidir. Ayrıca MVC Framework uygulamaları WebForm uygulamalarına göre daha hızlı çalışmaktadır.
ASP.NET MVC Framework uygulamalarında, klasik ASP.NET uygulamalarında olduğu gibi PostBack (Geri Yükleme) ve Event (Olay) tabanlı geliştirme düzeneği yoktur, sunucu kontrolleri (GridView, Calendar, FileUpload... vb) kullanılamaz ve ViewState (Görünüm Durumu) nesnesi yoktur. Bunun yanında kodlama mantığına bakıldığında ise büyük benzerliklerin olduğu da görülmektedir. Örneğin; ASP.NET MVC Framework uygulamaları tamamen ASP.NET Runtime (Çalışma Zamanı)üzerinde çalışmaktadır.

MVC Framework yapısını oluşturan katmanlar aşağıdaki gibidir:

  • Model: Uygulamanın veriye erişimini ve iş mantığını gerçekleştiren nesneleri içeren katmandır. Başka bir deyişle, kullanıcı bilgilerine erişmek, kullanıcı kaydetmek, kullanıcıyı kaydederken iş kuralı ve mantığının yer aldığı kullanıcı varlığını temsil eden sınıftır. LINQ (Language Integrated Query – Dil Entegreli Sorgu) ile gelen .dbml dosyaları ile Entity Framework (Varlık Altyapısı) ile gelen .edmx dosyaları veya DataSet, DataReader gibi nesnelerle veri taşıyan tipler bu katmanda yer almaktadır. Veriye erişim gerektiğinde controller ve view nesneleri bu kısımda yer alan nesnelerle iletişime geçebilir.
  • View (Görünüm): Uygulamanın kullanıcı arayüzünün oluşturulduğu ve arayüz dosyalarının bulunduğu katmandır. Anasayfalar, .aspx sayfaları, kullanıcı kontrolleri gibi kullanıcının görüntüleyebileceği dosyalar bu kısımda yer almaktadır. İstemciden iletilen HTTP talepleri kontrol nesneleri tarafından tutulur ve ilgili kontrol gelen URL’yi çözümleyerek isteğe uygun olan action (eylem) metodunu çağırır. Bu metot tarafından veri üzerinde işlem yapılacaksa model katmanındaki nesnelere erişilerek işlenen veri ilgili "view" nesnesine iletilir. Veri üzerinde yapılacak işlem yoksa talep doğrudan "view" nesnesine iletilebilir. View katmanında HTML kodu oluşturularak istemciye gönderilir. Model her zaman bir .aspx dosyası olmak zorunda değildir. Model katmanı her zaman bir .aspx sayfasından oluşmayacağından, tanımlanmış bir view engine (görünüm motoru) kütüphanesi kullanılarak da görünüm katmanı oluşturulabilir. ASP.NET MVC Framework ile gelen "view engine" kütüphanelerinin yanında İnternet üzerinden açık kaynaklı bazı "view engine" kütüphanelerine erişmek mümkündür.
  • Controller (Kontrol): Uygulamaya gelen talepleri yöneten katmandır. Gelen bir http isteği routing tablosuna bağlı olarak doğrudan controller sınıflarına ve o sınıflardaki action metotlarına aktarılır. "Controller" nesneleri içerisinde bulunan action isimli metotlar, gelen talepleri (bir veriye erişmek, güncellemek vs.) uygun görünüm ve model nesneleri üzerinden değerlendirmekle görevlidirler. Sayfaya ulaşan talepler URL bazlı olarak çözümlenerek ilgili eylem metoduna iletilir. Kontrol katmanında bulunan Eylem metotları uygulamanın görünüm ve model bileşenleriyle doğrudan iletişim kurabilir.

MVC Framework Kurulumu

MVC Framework kurulumu için Microsoft MVC Framework ardından Visual Studio için gerekli olan eklentiler kurularak kullanılabilir.

  1. İlk adımda MVC Framework Setup (Kurulum) çalıştırılır.
  2. Daha sonra MVC Framework için lisans sözleşmesi kabul edilerek kuruluma devam edilir.
  3.  Kurulum aşamasında hiçbir işlem yapılmadan kurulumun tamamlanması beklenir.
  4. Son olarak gelen ekranda Finish (Bitir) tuşu seçilerek kurulum tamamlanır.
  5. Bu kurulum tamamlandıktan sonra kullanılan Visual Studio' ya göre uygun tools kurularak MVC Framework kullanıma hazır duruma getirilir.

MVC Framework'un Getirileri  

  • ASP.NET WebForms (Web Uygulamaları) ile kullanılan anasayfa (Masterpage) yapısı, kullanıcı kontrolleri, session (oturum), membership (üyelik) vb. yapılar kullanılmaya devam edilebilir.
  • ViewState yoktur. MVC Framework mimarisi ViewState’e ters düşer.
  • MVC Framework HTML çıktısı üzerinde kullanıcıya kontrol hakkı verir.
  • MVC Framework test edilebilirlik sağlar. WebForms uygulamaları da test edilebilir ancak MVC Framework yapısı sayesinde controller sınıflarında yazılan her sayfanın test edilebilir olmasını sağlar.
  • MVC Framework tasarımı pluggable (tak-çıkar) bir yapıdadır, dependency injection (sistem dosyaları enjektesi) framework kütüphaneleri ile birlikte çalışır.
  • URL routing sistemi üzerine kurulu olan MVC Framework ile arama motorları ile uyumlu bir yapıdadır. Http isteğinde html doğrudan C# sınıfı olan kontrol sınıflarına gider, kontrol sınıfı ise bir .aspx sayfası oluşturacağına ya da bir nesneyi xml, json gibi döneceğine karar vererek view katmanını aktive eder.