Мартин Фаулер предлагает анализ MVC и MVP, а статья Википедии MVP дает больше ссылок.
Для меня есть два вопроса:
1). Насколько «живы» отношения Модель-Вид? Если Модель изменяется динамически, и Представления должны обновляться, чтобы отразить это изменение Модели, тогда у нас есть классический MVC, и Модель каким-то образом уведомляет соответствующие Представления об изменениях. Этот стиль не применяется к классическим веб-приложениям (например, как реализовано в Struts). Здесь обычно есть представление, созданное как единое целое с моментальным снимком модели (действительно часто в DTO, предоставляемых моделью). В большой литературе веб-стиль все еще упоминается как MVC.
2). Когда пользователь делает «что-то», кто отвечает за неинтерпретацию и действия. В MVC это обычно работа контроллеров. MVP, по-видимому, позволяет более прямое взаимодействие с View для Model для этой цели (если я правильно понимаю статью Фаулера).
Я очень предпочитаю чистое разделение интересов - подход MVC - это то, как я думаю, но это может быть просто знакомство.
Что должен выбрать человек? Как правило, я думаю, что вы руководствуетесь фреймворком, который вы решили использовать. Я родом из Struts, поэтому MVC в веб-стиле для меня естественен. Если я правильно понимаю, MVP имеет явное принятие в некоторых аспектах .NET. Я бы пошел с потоком любой фреймворк, который вы выберете, и я бы не стал отказываться от фреймворка только потому, что это MVP, а не MVC - даже если предположить, что можно провести четкое различие.