MVC (Model-View-Controller) Nedir?

6 2018 Aralık
6 Aralık 2018 tarihinde yazıldı.

Bilenler bilir, benim yazılımda gözümü açtığı yer PHP ortamıdır. PHP’de belirli bir aşama kaydettikten sonra BilgeAdam’da yazılım eğitimi almaya başlayınca bana “Açık kaynak kod da neymiş, özgür yazılım da neymiş” dediler ve C#, Ado.Net, Asp.Net bilgi bombardımanına başladılar. Zaten bu terimlerin ayrımını anlamak bile hatırı sayılır zamanımıza mal oldu. Eğitim bittikten uzun zaman sonra Asp.Net ile bir proje geliştireyim derken daha iyi olduğunda kuşku bulunmayan Asp.Net MVC ile bir proje geliştirmenin daha iyi olacağını değerlendirdim. Ancak açıkça söylemeliyim ki Asp.Net MVC’yi ben de bilmiyorum. Birlikte öğreneceğimizi umuyorum. .Net’e ilişkin yazıları PHP ortamında sizlere sunmak da işin başka ilginç bir tarafı…

MVC Nedir?

Model-View-Controller (MVC), yazılım mühendisliğinde kullanılan bir “mimari desen”dir. Kullanıcıya yüklü miktarda verinin sunulduğu karmaşık uygulamalarda veri ve gösterimin soyutlanması esasına dayanır. Böylece veriler (model) ve kullanıcı arayüzü (view) birbirini etkilemeden düzenlenebilir. Model-view-controller, bunu controller adı verilen ara bileşenle, veri gösterimi ve kullanıcı etkileşiminden, veri erişimi ve iş mantığını çıkarma suretiyle çözmektedir.

1979 yılında bu tasarım ortaya çıkmış olsa da günümüzde Microsoft’un ASP.NET MVC Framework’u geliştirmesi ile çoğu kişi için MVC denince akla ASP.NET MVC Framework gelmektedir. Oysa Microsoft şirketinin henüz yeni kurulmuş olduğu dönemlerde bu tasarım kalıbı vardı. Buradan da anlaşılacağı üzere MVC, Microsoft’un değildir. Ancak Microsoft’un ürettiği MVC Framework’un oldukça iyi olması ve çok popüler kullanılması MVC’yi Asp.Net ile özdeşleştirmiştir. Hatta bu sebeple yazıyı ilk olarak ASP.Net kategorisi altında yayınlasam daha mı göze çarpar diye düşündüğüm dahi olmuştur. Ama MVC’nin bir yazılım mimarisi olduğu ve Yazılım Mimarisi kategorisinde yer alması gerektiği de açıktır.

MVC deseni ilk defa 1979’da Trygve Reenskaug tarafından tanımlanmıştır ve sonra Xerox araştırma laboratuvarlarında Smalltalk üzerine çalışmalar devam etmiştir. İlk zamanlar Thing-Model-View-Controller adıyla tanımlanmıştır. İlk kullanım kılavuzu Applications Programming in Smalltalk-80: How to use Model-View-Controller olarak bilinir.

MVC (Model-View-Controller) bir yazılım dili değil, bir mimari desendir. Bu sebeple MVC öğrenirken yeni bir dil öğrenilecekmiş gibi olaya bakılmamalıdır. Zaten MVC’nin Asp.Net yanında PHP, Java, ColdFusion gibi dillerde de kullanıldığı göz önüne alındığında MVC’nin bir yazılım dili olmadığı daha net anlaşılacaktır.

MVC deseni üçe ayrılır: etki modelleme, sunum ve kullanıcı girişi dayalı eylemler. Yani MVC ile iş mantığı ve arabirim birbirinden ayrılır. Bu iki katman veritabanının sembolleştirildiği model ile desteklenirse model-view-controller oluşmuş olur.

ABC’si…

Model: İş mantığının veriyi kullanması için verinin şekillendirilmiş halidir. Model, davranış ve uygulama etki alanı verilerini yönetir, durumu hakkında bilgi taleplerini yanıtlar ve durumu değiştirmek için talimatlara tepki verir. Veri kaynağının yani veritabanının genellikle bulunduğu bölümdür. Veri kaynağının yanı sıra prosedürler ve işleyiş kurallarıda bu bölümde yer alır. Katmanlı mimariye müthiş uyumludur. Tek katmanlı olabileceği gibi fazlaca katmana da sahip olabilir.

View (Görünüm): Bilgi ekranını yönetir. Diğer bir deyişle, uygulamanın arabirimine ait olan her şey view kapsamına girer. Algoritma içermez. Bu sayede HTML ve kodu birbirinden ayırarak değiştirilmelerini kolaylaştırır. Yani arayüze ait olup kullanıcının gördüğü şeyler bu bölümde yer alır. Örneğin MVC ile hazırlanmış bir web sitesi ya da uygulamasında HTML, JavaScript, CSS gibi arayüze dair ne varsa bu bölümdedir. İş akışına ait bir şeyler bulunmaz. Ayrıca View bölümü sayesinde uygulamanın arayüzü uygulamanın çekirdek kısmından ayrı tutulduğundan tasarımı ve tasarımın değiştirilmesi açısından bize avantaj sağlar.

Controller (Denetleyici): Bu bölüm kullanıcının fare ve klavye girişlerini yorumlar, modeli bilgilendirir, uygun değişiklikleri yapar. Algoritma ve iş mantığını içerir. İş akışının gerçekleştiği, arayüzden gelen kullanıcı etkileşimlerinin değerlendirildiği, işlendiği, gerekli metodların çalıştırıldığı, değişkenlerin ve nesnelerin oluşturulduğu, gerekirse modelle View bölümleri arasında iletişimin sağlandığı yer burasıdır. Her View için bir Controller vardır fakat her Controller için View şartı yoktur.

Yazılım mimarisi konusunda şu yazı da göz atabilirsiniz.

Kaynak: Vikipedi, Ahmet Çığşar, Kübra Yeşilbağ

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir