MVC

MVC (Model-View-Controller) software design'de kullanıcı arayüzlerini, verileri ve kontrol mantığını uygulamak için yaygın olarak kullanılan bir modeldir. Yazılımın iş mantığı ve ekranı arasındaki ayrımı vurgular. Bu ayrım "separation of concerns", daha iyi bir işbölümü ve daha iyi bakım sağlar.MVVM (Model-View-Viewmodel), MVP (Model-View-Presenter) ve MVW (Model-View-Whatever) gibi diğer tasarım desenleri MVC'ye dayanmaktadır.

MVC yazılım tasarım deseninin üç bölümü aşağıdaki gibi tanımlanabilir:

  1. Model: Veri ve iş mantığını yönetir.
  2. View: Düzeni ve ekranı işler.
  3. Controller: Komutları modele yönlendirir ve parçaları görüntüler.

Model View Controller örnek

Basit bir alışveriş listesi uygulaması düşünün. Tek istediğimiz, bu hafta satın almamız gereken her eşyanın adının, miktarının ve fiyatının bir listesi. Aşağıda, bu işlevlerin bir kısmını MVC kullanarak nasıl uygulayabileceğimizi açıklayacağız.

Diagram to show the different parts of the mvc architecture.

Model

Model, uygulamanın hangi verileri içermesi gerektiğini tanımlar. Bu verilerin durumu değişirse, model; genellikle görünümü (böylece ekran gerektiği gibi değişebilir) ve bazen denetleyiciyi (güncellenmiş View ı kontrol etmek için farklı mantık gerekiyorsa) bildirir.

Alışveriş listesi uygulamamıza geri dönersek, Model liste öğelerinin hangi verileri içermesi gerektiğini -eşya, fiyat, vb. -  ve listedeki hangi eşyaların zaten mevcut olduğunu belirleyecektir.

View

View, uygulama verilerinin nasıl görüntüleneceğini belirler.

Alışveriş listesi uygulamamızda, görünüm, listenin kullanıcıya nasıl sunulduğunu belirleyecek ve Model den görüntülenecek verileri alacaktır.

Controller

Controller, uygulama kullanıcılarından gelen girdilere yanıt olarak modeli ve/veya görünümü güncelleyen mantık içerir.

Örneğin, alışveriş listemizde ürün eklememize veya silmemize izin veren giriş formları ve butonları olabilir. Bu eylemler Model in güncellenmesini gerektirir, bu nedenle girdi Controller a gönderilir. Bu da Model i uygun şekilde yönetir ve daha sonra güncellenmiş verileri View a gönderir.

Bununla birlikte, verileri farklı bir biçimde görüntülemek için View ı güncellemek isteyebilirsiniz, örneğin, eşya sırasını alfabetik olarak veya en düşük fiyattan en yüksek fiyata sıralayacak şekilde değiştirmek.Bu durumda Controller, Model i güncellemeye gerek kalmadan bunu doğrudan halledebilir.

Web'de MVC 

Bir web geliştiricisi olarak, daha önce hiç bilinçli olarak kullanmasanız bile, bu model muhtemelen oldukça tanıdık olacaktır. Veri modeliniz muhtemelen bir çeşit veritabanında bulunur (MySQL gibi geleneksel bir sunucu tarafı veritabanı veya IndexedDB [en-US] gibi bir istemci tarafı çözümü olsun.) Uygulamanızın kontrol kodu muhtemelen HTML / JavaScript ile yazılmıştır ve kullanıcı arayüzünüz muhtemelen HTML/CSS/istediğinizherhangibirşey kullanılarak yazılmıştır. Bu MVC'ye çok benziyor, ancak MVC bu bileşenlerin daha katı bir desen izlemesini sağlıyor.

Web'in ilk günlerinde, MVC mimarisi çoğunlukla formlar veya bağlantılar aracılığıyla  güncellemeler isteyen istemci ile  güncellenmiş görünümleri geri almak ve tarayıcıda görüntülemek için server-side(sunucu tarafı) da uygulanırdı.Ancak bu günlerde, client-side(istemci tarafı) veri depolarının ortaya çıkmasıyla daha fazla mantık istemciye itilir ve XMLHttpRequest  gerektiğinde kısmi sayfa güncellemelerine izin verir.

AngularJS ve Ember.js gibi Web çerçeveleri, biraz farklı şekillerde de olsa, bir MVC mimarisini uygular.

Daha fazla bilgi edinin

Genel bilgi