Я был сильным сторонником разделения интересов (SOC), встроенного в программное обеспечение, независимо от того, используете ли вы MVVM, MVC или MVP, все три шаблона довольно хороши. Поскольку это полностью относится к ASP.NET, я бы сказал, что вы должны использовать MVC3.
Я уже много лет являюсь разработчиком .NET и написал свой шаблон MVP, который построен на основе StructureMap (об этом много говорится в моем блоге), и какое-то время я никогда не видел выгоды от изменений, связанных с оставляя веб-формы, чтобы перейти к MVC. Однако, после того, как я так долго работал с ASP.NET, у меня просто были ошибки с веб-формами ASP.NET, которые совершенно не подвластны мне.
Основные ошибки в веб-формах возникают при превышении тайм-аута ViewState, в результате чего возникает общее криптографическое исключение, а во втором случае ViewState просто усекается клиентом или постом, что приводит к каким-либо допустимым криптографическим ошибкам. С MVC эти ошибки просто больше не применимы. В .NET4 я попытался создать приложение веб-формы без ViewState с новыми функциями, которые они добавили в .NET4, и это полностью не сработало, что подтверждается решением о том, что время веб-форм прошло.
Из MVC, MVC2 и MVC3 набор функций, который поставляется с MVC3 и механизмом просмотра Razor, является наиболее надежным. Вы получаете все улучшения, которые пришли с MVC2 вместе с гораздо более чистыми представлениями, которые позволяет вам создавать движок представления Razor, кроме того, вы получаете глобальные фильтры действий и запеченные шаблоны на стороне клиента jQuery (я уверен на 90%).
Я бы также подошел к MVC очень похоже на MVVM, где у меня было бы 3 различных набора сущностей, модели моего представления, сущности моего домена и физические модели базы данных. (Последний набор может или не может быть сущностями домена, я начал понимать, что попытка заставить ваши чистые доменные сущности работать со слоем базы данных может быть неоптимальной на продвинутых этапах)