MVVM #1 : Giriş

MVVM’den uzun zamandır bahsetmek istiyordum. Bugün MVVM’i şöyle bir inceleyeceğim.

Yeni
bir projeye başlamak biz yazılımcılar için oldukça heyecan vericidir.
UML’ler tasarlanır, kafada projenin konsepti oturur ve yazmaya büyük bir
şevkle başlarız. Ama maalesef bu projenin alacağı güncellemeleri
düşünmeden kodlamaya başlarız. Daha önceki tecrübelerimden yola çıkarak
şunu çok net söyleyebilirim ki bir projeyi güncellemek, geliştirmek veya
scale etmek bizler için gerçekten en zahmetli kısım, pazartesi sabahı
uyanmak kadar eziyetli. 🙂

MVVM NEDİR?
MVVM,
uygulama geliştirirken uygulamamızdaki modüller için iyi bir izolasyon
sağlamamıza yarayan bir geliştirme yaklaşımıdır. Web tarafındaki
MVC(Model-View-Controller) yaklaşımıyla bire bir aynı olmasa da, odak
noktası Silverlight ve WPF olan bir MVC diyebiliriz de…
NEDEN MVVM?
MVVM
deseni ile geliştirilen uygulamalarda parçalar birbiriyle olabildiğince
az ilişkilidir, bir modülde yapılan bir değişiklik diğerini minimum
seviyede etkiler. Bu izolasyona Separation of Concerns diyoruz.

MVVM
yaklaşımı ile
geliştirilen uygulamalarda tasarımcı tasarımını yapar, kodcu kodunu
yazar ve bu iki katmanda gerçekleşen ve gerçekleşecek olan değişiklikler
birbirinden mümkün
olan en az seviyede etkilenir. Yazının başında bahsettiğim projelerin
güncelleme ve ölçeklendirme zahmeti MVVM sayesinde kısmen ortadan
kalkıyor. Bu sebeple günümüzde MVVM yaklaşımı son derece önemli, ve
şahsi fikrim büyük çaplı projelerde bir should değil must.

Peki nedir bu Model, View ve ViewModel?

Model: Model, uygulamamızda kullanacağımız verilerdir. Verilerimiz için yazdığımız her sınıf birer model’dır.

View: View, uygulamanın arayüzüdür. Uygulamadaki her bir sayfa, her bir User Control birer View’dır.

View Model: Ve veri ile arayüzü bağlayan yapı View Model. ViewModel, View‘ın DataContext’idir.

View’ın
DataContext’i ViewModel’lar olduğundan MVVM’de herşey Binding üzerinden
yürüyor. Ayrıca View ile ViewModel arasındaki akışı sağlarken Command
ve Behavior yapılarından da faydalanıyoruz. Bu yapılar MVVM deseni ile
geliştirilen uygulamalar için olmazsa olmaz.

SONUÇ
MVVM’in kazanımlarını listeleyecek olursak;

  • Kolay ölçeklenebilen projeler
  • Tasarım ve kod tarafının birbirinden ayrılması
  • Daha düzenli ve daha okunabilir bir kod

Önümüzdeki günlerde Command ve
Behavior yapılarını ele alan bir yazı yazmayı düşünüyorum ve MVVM ile
geliştirilmiş bir örnek uygulama paylaşacağım.

Bu yazıda bir geliştirme yaklaşımı olan MVVM’i incelemeye çalıştım, faydalı olması dileğiyle.

Fazlasını Oku