İçeriğe geç
parazade

MVVM Nedir?

Yayın: · Son güncelleme:

MVVM Nedir? Kısaca

MVVM (Model-View-ViewModel), arayüzü (View) veriden (Model) ayıran ve aradaki ViewModel katmanı ile veri bağlama sayesinde ekranın verideki değişiklikleri kendiliğinden göstermesini sağlayan mimari desendir.

MVVM nedir?
İçindekiler
  1. MVVM nedir?
  2. Veri bağlama nasıl çalışır?
  3. Nelere dikkat etmeli?

MVVM nedir?

MVVM, Model-View-ViewModel kelimelerinin kısaltmasıdır. Microsoft'un WPF teknolojisi için geliştirilen bu desen, arayüz kodunu iş mantığından ayırmayı hedefler. Bugün Android (Jetpack), iOS (SwiftUI), Angular ve Vue gibi pek çok ortamda benzer bir yaklaşım görülür.

Üç parçanın görevleri şöyledir:

Katman Görevi
Model Veri ve iş kuralları
View Ekranda görünen arayüz
ViewModel View'ın ihtiyaç duyduğu veriyi ve komutları hazırlar

Veri bağlama nasıl çalışır?

MVVM'in ayırt edici özelliği veri bağlamadır (data binding). View, ViewModel'deki bir değişkene bağlanır. Değişken güncellendiğinde ekran da kendiliğinden güncellenir; kodla tek tek "şu etiketi yenile" demeniz gerekmez.

Örneğin bir hava durumu uygulamasında ViewModel'de sicaklik adlı bir alan bulunsun. Uygulama sunucudan yeni değeri, diyelim 18 derece bilgisini aldığında yalnızca bu alanı değiştirir. Ekrandaki yazı aynı anda 18 olur. Kullanıcı bir kutuya şehir adı yazdığında ise bağlama ters yönde çalışır ve değer ViewModel'e geçer.

Nelere dikkat etmeli?

ViewModel'in ekran nesnelerine doğrudan erişmemesi gerekir; aksi hâlde desenin sağladığı test kolaylığı kaybolur. Küçük bir ekran için MVVM fazla katman ekleyebilir, bu yüzden basit projelerde gereksiz karmaşıklık yaratabilir. Yeni başlıyorsanız önce MVC mantığını kavrayıp ardından bir sayaç uygulamasıyla veri bağlamayı denemek konuyu oturtur.

Sıkça Sorulan Sorular

MVVM hangi platformlarda kullanılır?

WPF ve .NET MAUI gibi Microsoft teknolojilerinde, Android'de Jetpack bileşenleriyle, iOS'ta SwiftUI ile sık kullanılır. Vue ve Angular gibi web framework'leri de benzer bir bağlama mantığı sunar.

MVVM öğrenmek için MVC bilmek gerekir mi?

Şart değildir ama MVC'yi bilmek işi kolaylaştırır. İki desen de veriyi arayüzden ayırma fikrine dayanır; farkı aradaki katmanın çalışma biçimidir.

İlgili terimler

MVCMVC (Model-View-Controller), bir uygulamayı veri ve iş kuralları (Model), kullanıcıya görünen arayüz (View) ve ikisi arasındaki trafiği yöneten kontrolcü (Controller) olarak üç parçaya ayıran mimari desendir.Yazılım Mimarisi(Software Architecture)Yazılım mimarisi, bir yazılım sisteminin ana bileşenlerini, bu bileşenlerin birbiriyle nasıl iletişim kurduğunu ve sistemin hangi ilkelere göre büyüyeceğini belirleyen üst düzey yapı ve kararlar bütünüdür.Arayüz(Interface)Arayüz (interface), nesne yönelimli programlamada bir sınıfın hangi metotları sağlaması gerektiğini tanımlayan, ancak bu metotların nasıl çalışacağını belirtmeyen sözleşmedir. Günlük dilde arayüz, kullanıcının yazılımla etkileşim kurduğu ekranı da ifade eder.AngularAngular, Google'ın geliştirdiği, TypeScript ile yazılan ve büyük ölçekli tek sayfa web uygulamaları kurmak için gereken araçların çoğunu hazır sunan açık kaynaklı bir frontend çatısıdır.Değişken(Variable)Değişken, programlamada bir değeri bellekte saklamak için kullanılan isimli alandır. İçindeki değer program çalışırken okunabilir ve değiştirilebilir; örneğin `fiyat = 250` satırı fiyat adlı bir değişken oluşturur.MySQLMySQL, verileri tablolarda saklayan ve SQL diliyle yönetilen açık kaynak kodlu bir ilişkisel veritabanı yönetim sistemidir. Web sitelerinde, özellikle WordPress gibi PHP tabanlı sistemlerde çok yaygın kullanılır.