Martin Fowler offers MVC and MVP analysis , and Wikipedia MVP provides more links.
There are two questions for me:
1). How to live is a Model-View relationship? If the model changes dynamically, and View (s) must be updated to reflect this change in the model, then we have a classic MVC, and the model somehow notifies of the relevant representations of the changes. This style does not apply to classic web applications (such as those implemented in Struts). Here usually there is a view created as one of the snapshot of the Model (indeed, often on the DTO provided by the model). In many literature, web style is still called MVC.
2). When the user does "something", who is responsible for ineterpreting and act. In MVC, this is usually the job of controllers. MVP seems to allow more direct interaction with View to Model for this purpose (if I understand the Fowlers article correctly).
I prefer a clean separation of concerns - the MVC approach is what I think, but it might just be an introduction.
What should a person choose? As a rule, I think that you are guided by a framework which you decided to use. I come from the background of Struts, so for MVC for web-style I feel quite natural. If I understand correctly, MVP has an explicit acceptance in some aspects of .NET. I would go with the flow of any structure that you have chosen, and I would not give up the structure just because it is MVP and not MVC, even if we assume that a clear distinction can be made.
source share