MVVM'ye kolay adım adım başvuru var mı?
Evet var. Buraya bir bak.
MVVM, MVC'nin süper seti mi yoksa alt seti mi?
MVVM, MVC ailesine aittir, bu yüzden eğer bunu söyleyebilirseniz, bu bir alt kümedir. Kullanıcı arayüzünü alttaki iş mantığından ayırmak bir varyanttır. Bunu MVC'nin bir kardeşi olarak tarif ederdim. OOP'nin ilk günlerinden beri insanlar UI'yi mantıklarından ayırmanın yollarını arıyorlar. MVC evrimleşen ilk arketipti. Çoğu insan doğru yapamasa da oldukça basittir. Görünüm sadece modelin bir gözlemcisidir ve gerektiğinde onu çağırır. Denetleyici, örneğin değiştirilebilir bir davranışa (örneğin ReadonlyController, AdminController) ihtiyaç duyduğunuzda görünümün modelle iletişim kurması için bir stratejidir. MVC çok başarılı ve bunu uygulamak gerçekten iyi bir uygulama.
MVVM, Martin Fowler tarafından tarif edildiği gibi özel bir MVP Kalıbı türüdür . MVP görüntüyü olabildiğince aptal tutmaya çalışır (yine de kullanıcı girdisi alırken vs.), böylece test edilebilirliği artırır. Sunum yapan kişinin görüşünü ve etkileşim mantığını soyutlamayı amaçlamaktadır. Sunucu yalnızca model / iş mantığı ile iletişim kurar ve Görünümü günceller. Martin Fowler, MVVM'yi Sunum Modeli Kalıbında hemen hemen anlatıyor.
Görünüm tamamen bir ViewModel içine alınır. Ne zaman View
bir özellik ViewModel
ihtiyacı, o da ihtiyacı var. Bu (ViewModel), temeldeki UI teknolojisinden, bir soyutlamadan tamamen bağımsız olması amaçlanmıştır. View ve ViewModel arasında iletişim kurmak için bir senkronizasyon modeli kullanılmalıdır (örn. Gözlemci). Durum bilgisi olmayan bir web ortamında bunu gerçekleştirmek kolay değildir. Görünüm artık modelinize / iş mantığınıza değil, bunun yerine bir ViewModel'e bağlanmadığından MVVM, MVP'den farklıdır.
Uygulamamın Windows ve Web sürümleri için hangi model modern ve hangisini seçmeliyim?
Teoride Sunum Modeli (MVVM benzeri) kullanılan UI teknolojisinden tamamen bağımsız olmalıdır. Bununla birlikte, senkonizasyon yönü ele alınmalıdır. Senkronizasyon tutkalının zaten mevcut olduğu WPF ile Komutlara ve Özelliklere bağlanarak kolayca yapılabilir. ASP.NET ile bu farklı bir hikaye. Ancak, CodeProject ile ilgili tüm Windows kullanıcı arabirimi teknolojilerinde Sunu Modeli Modeli kullanan bir makale vardır . Bir bak.