Yazılım tasarımında önemli kararlardan biri kullanıcı arayüzü ve iş katmanı arasında bilgi akışının düzenlenmesidir. Kullanılan ortamın windows veya web tabanlı olmasına bağlı olarak yapılacak tercihte farklılıklar olabilir. Kullanılan arayüz mimarileri OOP’in temel ilkelerinden olan kavramların ayrılığına (separation of concerns) dayanır. En çok bilinen arayüz – iş katmanı modelleri,
MVC (Model-View-Controller) mimarisi üç temel bileşenden oluşur; Model, Görünüm, Denetçi. MVC ilk defa 70li yılların sonunda Xerox bünyesinde uygulanmıştır.
MVC Modeli
Model: uygulama alanına mahsus bileşenlerin tanımlandığı bunlara ilişkin durumları ve bilgileri saklayan yapılardır. Modelde bir değişiklik olduğunda buna ilişkin görsel (View) yapılar uyarılır.
View (Görünüm): modelde bulunan bilgilerin kullanıcıya anlaşılır bir şekilde sunulmasından sorumludur. Aynı zamanda kullanıcının girdiği verileri Denetçi (Controller) birimine iletir. Görünüm kısmı php şablonları, jsp, asp sayfalarından oluşabilir.
Controller (Denetçi): Denetçi bu üçlünün habercisini oluşturur. Görünüm ve model arasında veri akışını kontrol eder, görünümden girilen verileri modele yansıtır, modeldeki durumların ve bilgilerin görünümle ilgili bölümlerini günceller. Bazı durumlarda uygulama için Observer (gözlemci) deseni kullanılabilir.
MVC’nin temel özellikleri,
- Model, Görünüm ve Denetçi’den bağımsızdır.
- Model, Görünüm ve Denetçi’den bağımsız olarak oluşturulup, güncellenebilir.
- Aynı Modele birden fazla Görünüm ve Denetçi çifti uygulanabilir. Aynı model hem web ara yüzünden hem de XML yapısından sunulabilir.
Model View Presenter (MVP) modeli MVC’nin daha gevşek bağlara sahip özel bir uygulaması olarak tasarlanmıştır.
MVP Modeli
MVP’nin bileşenleri,
Model: Asıl verileri ve yapıları barındıran sınıflardır.
View (Görünüm): Modeldeki verilerin görüntülenmesini ve kullanıcı olaylarının sunucuya (presenter) iletilmesini sağlar.
Presenter (Sunucu): Sunucu model ve görünüm üzerinde etkilidir. Modeldeki verileri alır, bunları saklar ve görünüm için uygun formata dönüştürür.
Presentation Model (PM)
PM modeli 2004 yılında Martin Fowler tarafından önerilmiştir. MVP’ye benzer olarak görünümü, davranışı ve durumu birbirinden ayırmaktadır. Bu mimaride görünüm, sunum modeliyle (presentation model) sürekli olarak etkileşmekte ve gösterdiği bilgileri tazelemektedir. Kullanıcadan gelen giriş bilgileri bu sunum modelini güncellemekte ve saklanmaktadır, görünüm ise kendini sunum modelinden tazelemektedir.
MVVM (Model-View-ViewModel)
MVVM üç temel bileşenden oluşur; Model, View, ve ViewModel.
- View doğrudan bir ViewModel’e bağlanır
- ViewModel barındırdığı bilgileri View’a döndürür
- ViewModeller genelde View’a karşılık gelen DataContext nesneleridir
- ViewModel’de oluşan değişiklikler View’a hemen aktarılır
- View’dan gelen kullanıcı girişleri ViewModel’de ilişkili bir komutu çalıştırır
- ViewModel yapılan değişiklikleri Model’e yansıtır
- Model ve View arasında doğrudan bir ilişki yoktur
- MVVM mimarisinde ViewModel’e test yazmak oldukça kolaydır. Test sınıfları ViewModel için farklı bir View ifade eder.
MVVM Modeli
MVC’nin farklı uyarlamaları,
- Model Delegate
- Morphic Interface
- Model Pipe View Controller
- Four Layer Architecture
Konuyla ilgili başurabileceğiniz bağlantılar,
MSDN, WPF Apps With The Model-View-ViewModel Design Pattern
MVC or MVP Pattern – Whats the difference?
Model View Controller
Presentation Model
Code Project, Model View Controller, Model View Presenter, and Model View ViewModel Design Patterns