Denetleyici ve ViewModel çeşitli şekillerde farklılık gösterir.
MVC'de Kontrolör görünümü bilir, Görünümü değiştirebilir. Aynı zamanda Modeli de bilir ve arayabilir. MVVM'de bir ViewModel, Görünümün soyut bir temsilidir ve somut kullanıcı arayüzünü bilmez, Modeli istendiği gibi görüntülenebilecek şekilde sarar.
Klasik MVC'de, bir kontrolör Görünüm'ün Model ile etkileşime girme stratejisidir . Aslında, bazen bir Denetleyici bile gerekli değildir. Farklı davranışlara ihtiyacınız varsa aynı Görünüm için farklı ViewModels'lara sahip olabileceğiniz için MVVM'de buna ihtiyacınız yoktur. MVC'de, örneğin Model ile iletişim kurmak için bir ReadOnlyController veya AdminController'a sahip olabilirsiniz. MVVM'de sadece iki ViewModeliniz olabilir ve Görünüm için ihtiyacınız olanı seçebilirsiniz.
Ama bazı benzerlikleri var. Her iki modelde de Görüş bir gözlemcidir . Klasik MVC'de, görünüm modelin bir gözlemcisidir, MVVM'de ViewModel'in bir gözlemcisidir.
Her iki örüntü de endişelerin ayrılmasını sağlamak içindir. MVVM öncelikle, kullanımdaki UI teknolojisinden tamamen bağımsız olarak Görüşün bir soyutlamasını sağlamayı amaçlamaktadır. MVC bu kadar ileri gitmiyor. Ana odak noktası endişelerin ayrılmasıdır, böylece iş mantığını (Modeli) görünüme sokmazsınız.
Ayrıca bu bulabilir cevabı yararlı benzer bir soruya benim.
Sonunda, her iki modelin de aynı aileye ait olduğunu söylemeliyim. MVVM'nin soyundan gelen MVP, MVC'nin bir kardeşidir. Daha fazla bilgi edinmek istiyorsanız, Martin Fowler'in web sitesine bu bağlantıyı takip edin , her şeyi ayrıntılı olarak açıklıyor.