MVC - это шаблон проектирования, в котором ответственность за отображение данных делегируется компонентам View, ответственность за обработку пользовательского и системного ввода делегируется компонентам Controller, а ответственность за обработку бизнес-логики и данные делегируются компонентам модели. ASP.NET MVC - это реализация шаблона MVC для веб-программирования ASP.NET.
ASP.NET MVC сравнивается с ASP.NET WebForms, где не ожидается четкого разделения обязанностей (хотя хорошие дизайны часто пытаются реализовать MVC-подобный дизайн). В веб-формах обычно рендеринг представлений, обработка ввода-вывода (веб-запросы) и обязанности бизнес-логики часто смешиваются между разметкой и кодом на страницах ASPX. Например, в WebForms вы можете встроить SqlDataSource с логикой выбора прямо в свою разметку и привязать его к GridView. Это очень трудно проверить, что логика выбора работает с использованием модульных тестов. В ASP.NET MVC выбор данных будет обрабатываться действием контроллера, которое генерирует данные представления, которые будут переданы и обработаны представлением. Правильное функционирование этого действия контроллера (это просто метод класса контроллера) гораздо проще проверить с помощью модульных тестов.
ASP.NET MVC использует URL-адреса на основе REST, а не модель WebForm PostBack для взаимодействия с пользователем. MVC может использовать любой метод HTTP со стандартным ожиданием, что URL-адреса RESTful являются нормой. В WebForms обычно видны только используемые методы GET / POST.
Несмотря на то, что ASP.NET WebForms является относительно зрелым и для него разработан ряд элементов управления, включая сторонние элементы управления, ASP.NET MVC все еще находится в бета-версии (по состоянию на 12/2008) и имеет гораздо меньше доступных элементов управления. Некоторые утверждают, что это вполне приемлемо, поскольку одним из аспектов MVC является предоставление разработчику большего контроля над рендерингом представления. Другие могут посчитать это серьезным недостатком и могут подождать, пока не будут разработаны дополнительные элементы управления, работающие с моделью MVC.
Для сравнения с другими языками / средами, см., Среди прочего, Ruby on Rails (Ruby), Java Struts или Spring MVC (Java) и Django (Python).