MVVM vs MVC vs MVP
Model – The business objects and many business rules defined as classes
View – The interface the user interacts with
Controller , ViewModel, and Presenter – These all provide methods for separating the view from the model
Controller (ASP.NET MVC)
One-to-many relationship between the Controller and the views. One controller will be responsible for initiating the display of many different views.
There are numerous variations of how the views should or should not communicate with the models in MVC. With ASP.NET MVC, all requests are intercepted and redirected by a controller.
ViewModel (WPF, knockout js)
One-to-one relationship between the view model and the views
Views interact with the view model by binding (for example, WPF data binding) to the view model’s properties/functions
One-to-one relationship between the Presenter and the views
There is no mechanism to bind the views to a view model so instead, each view implements an interface providing the means for the presenter to interact with the view. In addition, each view has a reference to the presenter. This allows views to forward messages to the presenter.