Model-View-Controller


Model-View-Controller (MVC, «Модель-Представление-Контроллер», «Модель-Вид-Контроллер») — схема разделения данных приложения и управляющей логики на три отдельных компонента: модель, представление и контроллер — таким образом, что модификация каждого компонента может осуществляться независимо[1].

Концепция MVC была описана Трюгве Реенскаугом в 1978 году[1][2], работавшим в научно-исследовательском центре «Xerox PARC» над языком программирования «Smalltalk». Позже, Стив Бурбек реализовал шаблон в Smalltalk-80[1][3][4].

Окончательная версия концепции MVC была опубликована лишь в 1988 году в журнале Technology Object[англ.][5].

Впоследствии шаблон проектирования стал эволюционировать. Например, была представлена иерархическая версия HMVC; MVA[англ.], MVVM[6][3][4].

Дальнейший виток популярности привнесло развитие фреймворков, ориентированных на быструю развёртку, на языках Python (Django), PHP (Laravel) и Ruby (Ruby on Rails). На момент 2017 года, фреймворки с MVC заняли заметные позиции по отношению к остальным фреймворкам без этого шаблона[7].

С развитием объектно-ориентированного программирования и понятия о шаблонах проектирования — был создан ряд модификаций концепции MVC, которые при реализации у разных авторов могут отличаться от оригинальной. Так, например, Эриан Верми в 2004 году описал пример обобщённого MVC[8].