Из Википедии, бесплатной энциклопедии
  (Перенаправлено из Model-View-Controller )
Перейти к навигации Перейти к поиску
Схема взаимодействий в шаблоне MVC

Модель – представление – контроллер (обычно известный как MVC ) - это шаблон проектирования программного обеспечения [1], обычно используемый для разработки пользовательских интерфейсов, который разделяет связанную логику программы на три взаимосвязанных элемента. Это сделано для того, чтобы отделить внутреннее представление информации от способов, которыми информация представляется пользователю и принимается от него. [2] [3]

Этот шаблон, традиционно используемый для настольных графических пользовательских интерфейсов ( GUI ), стал популярным для разработки веб-приложений . [4] Популярные языки программирования, такие как JavaScript , Python , Perl , Object Pascal / Delphi , Ruby , PHP , Java , C # , Swift и Elixir, имеют инфраструктуры MVC, которые используются для разработки веб-приложений или мобильных приложений прямо из коробки .

Компоненты [ править ]

Модель
Центральная составляющая узора. Это динамическая структура данных приложения, не зависящая от пользовательского интерфейса. [5] Он напрямую управляет данными, логикой и правилами приложения.
Вид
Любое представление информации, такое как диаграмма, диаграмма или таблица. Возможны несколько представлений одной и той же информации, например гистограмма для управления и табличное представление для бухгалтеров.
Контроллер
Принимает ввод и преобразует его в команды для модели или представления. [6]

В дополнение к разделению приложения на эти компоненты, дизайн модель – представление – контроллер определяет взаимодействие между ними. [7]

  • Модель отвечает за управление данными приложения. Он получает пользовательский ввод от контроллера.
  • Представление отображает представление модели в определенном формате.
  • Контроллер реагирует на ввод пользователя и выполняет взаимодействия с объектами модели данных. Контроллер получает входные данные, при необходимости проверяет их и затем передает входные данные модели.

Как и другие программные шаблоны, MVC выражает «суть решения» проблемы, позволяя адаптировать ее для каждой системы. [8] Конкретные проекты MVC могут значительно отличаться от традиционного описания здесь. [9]

История [ править ]

MVC стал одним из первых подходов к описанию и реализации программных конструкций с точки зрения их ответственности . Это одно из важнейших достижений на раннем этапе разработки графических пользовательских интерфейсов . [10]

Трюгве Реенскауг представил MVC в Smalltalk -79 во время посещения Исследовательского центра Xerox в Пало-Альто (PARC) [11] [12] в 1970-х. В 1980-х Джим Альтхофф и другие реализовали версию MVC для библиотеки классов Smalltalk-80. Лишь позже в статье 1988 года в The Journal of Object Technology (JOT) MVC была выражена как общая концепция. [13]

Впоследствии шаблон MVC развился [14], что привело к появлению таких вариантов, как иерархическая модель – представление – контроллер (HMVC), модель – представление – адаптер (MVA), модель – представление – презентатор (MVP), модель – представление – модель представления ( MVVM) и другие, адаптировавшие MVC к разным контекстам.

Использование шаблона MVC в веб - приложениях взрыв популярности после введения NeXT «s WebObjects в 1996 году, который был первоначально написан в Objective-C (что в значительной степени заимствованы из Smalltalk) и помогли обеспечить соблюдение принципов MVC. Позже шаблон MVC стал популярен среди разработчиков Java, когда WebObjects был перенесен на Java . Более поздние фреймворки для Java, такие как Spring (выпущенный в октябре 2002 г.), продолжали прочную связь между Java и MVC. Введение фреймворков Django (июль 2005 г., для Python ) и Rails (декабрь 2005 г., для Ruby).), оба из которых делали упор на быстрое развертывание, повысили популярность MVC за пределами традиционной корпоративной среды, в которой он давно стал популярным.

Использование в веб-приложениях [ править ]

Первоначально разработанный для настольных компьютеров, MVC получил широкое распространение в качестве дизайна для приложений World Wide Web на основных языках программирования . Было создано несколько веб-фреймворков , обеспечивающих соблюдение этого шаблона. Эти программные фреймворки различаются по своим интерпретациям, в основном по способу разделения ответственности MVC между клиентом и сервером . [15]

В некоторых фреймворках веб-MVC используется подход тонкого клиента, который размещает почти всю логику модели, представления и контроллера на сервере. В этом подходе клиент отправляет либо запросы гиперссылки, либо представления формы в контроллер, а затем получает полную и обновленную веб-страницу (или другой документ) из представления; модель полностью существует на сервере. [15]

См. Также [ править ]

  • Многоуровневая архитектура
  • Иерархическая модель – представление – контроллер
  • Модель – вид – адаптер
  • Модель – представление – ведущий
  • Модель – вид – модель просмотра
  • Паттерн Entity-Control-Boundary
  • Презентация – абстракция – контроль
  • Действие – домен – ответчик
  • Образец наблюдателя
  • Разделение проблем
  • Шаблон стратегии
  • Обнаженные предметы

Ссылки [ править ]

  1. ^ https://www.youtube.com/watch?v=o_TH-Y78tt4&t=1667
  2. ^ Reenskaug, Трюгве; Коплиен, Джеймс О. (20 марта 2009 г.). «Архитектура DCI: новое видение объектно-ориентированного программирования» . Разработчик Artima . Архивировано из оригинала (html) 23 марта 2009 года . Дата обращения 3 августа 2019 . Более глубоко, структура существует, чтобы отделить представление информации от взаимодействия с пользователем.
  3. ^ Burbeck (1992): «... пользовательский ввод, моделирование внешнего мира и визуальная обратная связь с пользователем явно разделены и обрабатываются тремя типами объектов».
  4. ^ Дэвис, Ян. "Каковы преимущества MVC?" . Интернет-алхимия . Проверено 29 ноября 2016 .
  5. ^ Burbeck, Стив (1992) Программирование приложений в Smalltalk-80: Как использовать Модель – Представление – Контроллер (MVC)
  6. ^ Простой пример архитектурного шаблона MVC (модель – представление – контроллер) для абстракции
  7. ^ Бушманн, Франк (1996) Архитектура программного обеспечения, ориентированная на шаблоны .
  8. ^ Гамма, Эрих и др. (1994) Паттерны дизайна
  9. ^ Мур, Дана и др. (2007) Профессиональные многофункциональные Интернет-приложения: Ajax и не только : «С момента зарождения MVC было много интерпретаций шаблона. Концепция была адаптирована и применена по-разному к широкому спектру систем и архитектур».
  10. ^ Модель – Просмотр – История контроллера . C2.com (11 мая 2012 г.). Проверено 9 декабря 2013.
  11. ^ Заметки и исторические документы от Трюгве Реенскауг, изобретателя MVC.
  12. ^ «Заметка о требованиях DynaBook», Trygve Reenskaug, 22 марта 1979 г., SysReq.pdf .
  13. ^ Краснер, Гленн Э .; Поуп, Стивен Т. (август – сентябрь 1988 г.). «Поваренная книга для использования парадигмы пользовательского интерфейса контроллера модель – представление в Smalltalk-80» . Журнал объектных технологий . Публикации SIGS. 1 (3): 26–49.Также опубликовано как « Описание парадигмы пользовательского интерфейса модель – представление – контроллер в системе Smalltalk-80 » (отчет), ParcPlace Systems; Проверено 5 июня 2012.
  14. ^ Развитие MVC и других архитектур пользовательского интерфейса от Мартина Фаулера.
  15. ^ а б Лефф, Авраам; Рэйфилд, Джеймс Т. (сентябрь 2001 г.). Разработка веб-приложений с использованием шаблона проектирования модель / представление / контроллер . Конференция по корпоративным распределенным объектным вычислениям IEEE. С. 118–127.

Библиография [ править ]