WikiDer > Модель – представление – контроллер
Модель – представление – контроллер (обычно известный как MVC) это шаблон разработки программного обеспечения[1] обычно используется для разработки Пользовательский интерфейс который разделяет логику связанной программы на три взаимосвязанных элемента. Это сделано для того, чтобы отделить внутреннее представление информации от способов, которыми информация предоставляется пользователю и принимается от него.[2][3]
Традиционно используется для настольных ПК графический пользовательский интерфейс (GUI), этот паттерн стал популярным для проектирования веб-приложения.[4] Популярные языки программирования, такие как JavaScript, Python, Object Pascal / Delphi, Рубин, PHP, Ява, C #, и Быстрый иметь инфраструктуры MVC, которые используются для разработки веб-приложений или мобильных приложений. из коробки.
Составные части
- Модель
- Центральная составляющая узора. Это динамическая структура данных приложения, независимая от пользовательского интерфейса.[5] Он напрямую управляет данными, логикой и правилами приложения.
- Вид
- Любое представление информации, такое как диаграмма, диаграмма или таблица. Возможны несколько представлений одной и той же информации, например гистограмма для управления и табличное представление для бухгалтеров.
- Контроллер
- Принимает ввод и преобразует его в команды для модели или представления.[6]
Помимо разделения приложения на эти компоненты, дизайн модель – представление – контроллер определяет взаимодействия между ними.[7]
- Модель отвечает за управление данными приложения. Он получает пользовательский ввод от контроллера.
- Вид означает представление модели в определенном формате.
- Контроллер реагирует на ввод пользователя и выполняет взаимодействия с объектами модели данных. Контроллер получает входные данные, при необходимости проверяет их и затем передает входные данные модели.
Как и другие программные шаблоны, MVC выражает «суть решения» проблемы, позволяя адаптировать ее для каждой системы.[8] Конкретные проекты MVC могут значительно отличаться от традиционного описания здесь.[9]
История
MVC стал одним из первых подходов к описанию и реализации программных конструкций с точки зрения их возможностей. обязанности.[10]
Трюгве Реенскауг представил MVC в Болтовня-79 при посещении Xerox Исследовательский центр Пало-Альто (ПАРК)[11][12] в 1970-е гг. В 1980-х Джим Альтхофф и другие реализовали версию MVC для библиотеки классов Smalltalk-80. Лишь позже появилась статья 1988 г. Журнал объектных технологий (JOT) выражают MVC как общую концепцию.[13]
Впоследствии паттерн MVC эволюционировал,[14] рождая варианты, такие как иерархическая модель – представление – контроллер (HMVC), модель – вид – адаптер (МВА), модель – представление – ведущий (MVP), модель – представление – модель просмотра (MVVM) и другие, адаптировавшие MVC к разным контекстам.
Популярность использования шаблона MVC в веб-приложениях резко возросла после появления Следующийс WebObjects в 1996 году, который изначально был написан на Цель-C (который в значительной степени заимствован из Smalltalk) и помог обеспечить соблюдение принципов MVC. Позже шаблон MVC стал популярен среди разработчиков Java, когда WebObjects был перенесен на Ява. Более поздние фреймворки для Java, такие как Весна (выпущен в октябре 2002 г.), продолжает прочную связь между Java и MVC. Внедрение фреймворков Джанго (Июль 2005 г., для Python) и Рельсы (Декабрь 2005 г., для Рубин), оба из которых делали упор на быстрое развертывание, повысили популярность MVC за пределами традиционной корпоративной среды, в которой он давно стал популярным. MVC веб-фреймворки теперь владеют большими рыночными долями по сравнению с не-MVC веб наборы инструментов.[нужна цитата]
Использование в веб-приложениях
Первоначально разработанный для настольных компьютеров, MVC получил широкое распространение в качестве дизайна для Всемирная паутина приложения в основных языки программирования. Несколько веб-фреймворки были созданы, которые обеспечивают соблюдение шаблона. Эти программные фреймворки различаются в своих интерпретациях, в основном в том, как обязанности MVC разделены между клиент и сервер.[15]
Некоторые фреймворки Web MVC требуют Тонкий клиент подход, при котором почти вся логика модели, представления и контроллера размещается на сервере. Это отражено в таких фреймворках, как Джанго, Рельсы и ASP.NET MVC. При таком подходе клиент отправляет либо гиперссылка запросы или форма отправляет контроллеру, а затем получает полную и обновленную веб-страницу (или другой документ) из представления; модель полностью существует на сервере.[15] Другие фреймворки, такие как AngularJS, EmberJS, JavaScriptMVC и Магистраль позволяют компонентам MVC частично выполняться на клиенте (см. также Аякс).[нужна цитата]
Смотрите также
- Многоуровневая архитектура
- Иерархическая модель – представление – контроллер
- Модель – вид – адаптер
- Модель – представление – ведущий
- Модель – вид – модель просмотра
- Шаблон Entity-Control-Boundary
- Презентация – абстракция – контроль
- Действие – домен – ответчик
- Образец наблюдателя
- Разделение проблем
- Шаблон стратегии
- Голые предметы
Рекомендации
- ^ https://www.youtube.com/watch?v=o_TH-Y78tt4&t=1667
- ^ Реенскауг, Трюгве; Коплиен, Джеймс О. (20 марта 2009 г.). «Архитектура DCI: новое видение объектно-ориентированного программирования». Разработчик Artima. Архивировано из оригинал (HTML) 23 марта 2009 г.. Получено 3 августа 2019.
Более глубоко, структура существует, чтобы отделить представление информации от взаимодействия с пользователем.
- ^ Burbeck (1992): «... пользовательский ввод, моделирование внешнего мира и визуальная обратная связь с пользователем явно разделены и обрабатываются тремя типами объектов».
- ^ Дэвис, Ян. "Каковы преимущества MVC?". Интернет-алхимия. Получено 2016-11-29.
- ^ Бербек, Стив (1992) Программирование приложений на Smalltalk-80: как использовать модель – представление – контроллер (MVC)
- ^ Простой пример архитектурного шаблона MVC (модель – представление – контроллер) для абстракции
- ^ Бушманн, Франк (1996) Архитектура программного обеспечения, ориентированная на шаблоны.
- ^ Гамма, Эрих и др. (1994) Шаблоны проектирования
- ^ Мур, Дана и др. (2007) Профессиональные полнофункциональные интернет-приложения: Ajax и не только: «С момента зарождения MVC было много интерпретаций шаблона. Концепция была адаптирована и применена по-разному к большому количеству систем и архитектур».
- ^ Модель – Просмотр – История контроллера. C2.com (11 мая 2012 г.). Проверено 9 декабря 2013.
- ^ Записки и исторические документы от Трюгве Реенскауг, изобретателя MVC.
- ^ «Примечание о требованиях DynaBook», Трюгве Реенскауг, 22 марта 1979 г., SysReq.pdf.
- ^ Краснер, Гленн Э .; Поуп, Стивен Т. (август – сентябрь 1988 г.). «Поваренная книга для использования парадигмы пользовательского интерфейса контроллера модель – представление в Smalltalk-80». Журнал объектных технологий. Публикации SIGS. 1 (3): 26–49. Также опубликовано как "Описание парадигмы пользовательского интерфейса модель – представление – контроллер в системе Smalltalk-80"(Отчет), ParcPlace Systems; Дата обращения 05.06.2012.
- ^ Эволюция MVC и других архитектур пользовательского интерфейса от Мартина Фаулера.
- ^ а б Лефф, Авраам; Рэйфилд, Джеймс Т. (сентябрь 2001 г.). Разработка веб-приложений с использованием шаблона проектирования модель / представление / контроллер. Конференция по корпоративным распределенным объектным вычислениям IEEE. С. 118–127.
Библиография
В Викиучебнике есть книга на следующие темы: Шаблоны проектирования в информатике / Модель – представление – контроллер |