Model, View ve Controller kelimelerinin baş harflerinden oluşan MVC yazılım mühendisliğinde kullanılan bir design patterndır. Tygve Reeskaug tarafından 1979 yılında oluşturulmuş olup son dönemlerde Microsoft’un MVC desenini ASP.NET teknolojisi ile birleştirmesi sonucu popülaritesi daha da artmıştır.

MVC deseni, 3 katmandan oluşmaktadır ve bu katmanlar birbirini etkilemeden çalışır. Proje yönetiminin ve kontrolünün daha rahat sağlanabilmesi tercih sebeplerindendir.

Kullanıcıya yüklü miktarda verinin sunulduğu karmaşık uygulamalarda veri ve gösterimin soyutlanması esasına dayanır.

DESIGN PATTERN NEDİR?

Design pattern (Tasarım deseni) yazılım geliştiricilerin yazılım geliştirme esnasında çok karşılaştıkları, birbirine benzer sorunları çözmek için deneme yanılma yoluyla elde ettikleri genel çözüm önerileridir. Bir algoritma ya da kod olmadığı gibi dilden de bağımsızdır.

MODEL

MVC’de projenin iş mantığının oluşturulduğu bölümdür. İş mantığıyla beraber validation ve veri erişim işlemleri de bu bölümde gerçekleştirilmektedir. Veri depolama, DB sorguları ve mutasyonlar başlıkları burada toplanır.

VIEW

MVC’de projenin arayüzlerinin oluşturulduğu bölümdür. Bu bölümde projenin kullanıcılara sunulacak olan HTML dosyaları yer almaktadır. Projenin geliştirildiği yazılım dillerine göre dosya uzantıları da değişebilmektedir. Klasörleme ve klasörlerin hiyerarişi de burada dikkat edilmesi gereken bir noktadır. View’ın bir görevi de kullanıcılardan alınan istekleri Controller’a iletmektir.

CONTROLLER

MVC’de projenin iç süreçlerini kontrol eden bölümdür. Bu bölümde View ile Model arasındaki bağlantı kurulur. Kullanıcılardan gelen requestler değerlendirilir, detayına göre hangi işlemlerin yapılacağı ve kullanıcıya hangi View’ın döneceği belirtilir.

Controller, kullanıcıdan gelen dataları yakalayan, bu dataların doğruluğunu kontrol eden, datalar üzerinde gerekli işlemleri yapan, model aracılığıyla database üzerinde veri saklanmasına, verilerin güncellenmesine ve silinmesine yardımcı olan, işlemleri bittiği zaman da kullanıcıya bir ekran gösterecekse bu ekranın render edilmesini sağlayan birimdir. Controller bölümünün kurgusu iyi tutulmaya çalışılmalıdır.