Практически мгновенно, когда я говорю с разработчиками о Model View Controller ( MVC ), они говорят, что вы делаете запрос к URL-адресу, когда сервер создает сущность (MODEL) и предоставляет вам визуальное представление этой модели.
Значит ли это, что MVC предназначен только для Интернета, или я встречался с людьми, которые являются просто разработчиками, которые используют MVC для написания веб-приложений?
Есть ли применение MVC в приложениях в стиле рабочего стола?
Я, например, новичок в парадигме и хотел бы знать о любом супер-сет для MVC
web-development
design-patterns
mvc
Deeptechtons
источник
источник
Ответы:
MVC это шаблон. Шаблоны применяются во всем программировании. MVC просто очень хорошо работает в веб-контексте.
Как указывает Гнат, просто взгляните на тег mvc, и вы увидите несколько примеров его реализации.
источник
Учитывая, что MVC с 1977 года, а сеть была изобретена только в 1991 году, должно быть совершенно очевидно, что MVC предназначен не только для Интернета.
источник
Нет, разработка для OS X и iOS использует шаблон Model View Controller.
источник
Задайте вопрос в среде Microsoft, и многие подумают, что вы имеете в виду Asp.Net MVC, которая является реализацией MVC специально для Интернета.
К сожалению, есть много людей, которые не осознают, что это реализация шаблона MVC, и думают, что они являются взаимозаменяемыми терминами, что приводит к предположению о «только сети».
источник
По крайней мере, насколько я знаю, первая реализация MVC была в Smalltalk. Это определенно присутствовало в Smalltalk-80. Хотя у меня нет никакой документации, чтобы доказать это, я считаю, что (или что-то совсем похожее) было к тому времени в Smalltalk несколько лет.
Большинство OO GUI-структур включают по крайней мере какой-то вариант MVC. Однако я не уверен, что именно «суперсет» будет означать в этом случае. Трудно сказать, является ли какой-либо конкретный вариант надмножеством, подмножеством или одноранговым узлом MVC, но я бы предпочел рассмотреть большинство из них равноправных.
В любом случае, многие (большинство?) Из них были использованы для разработки десктопов, а не для веб-разработки. Благодаря некоторым старым патентам AT & T большинству оконных систем требуются программы, позволяющие заново генерировать представления по требованию. Это (почти) вызывает по крайней мере некоторую степень разделения между кодом, который поддерживает текущее состояние (модель), и кодом, который отображает это состояние (представление). Это все еще оставляет много возможностей для вариаций: 1) степень изоляции функциональности контроллера и 2) точные детали того, где проводить линии между каждой из основных частей.
источник
Нет, это относится даже к автономным приложениям. Пример Java Swing следует MVC.
источник
Так что в этой области очень много разных шаблонов дизайна.
и так далее. За эти годы они были переплетены, слиты воедино, изменены и применяются в самых разных контекстах. Важным моментом здесь является то, что шаблон проектирования MVC 1977 года довольно сильно изменился и больше не является шаблоном проектирования, используемым серверными веб-фреймворками. В качестве примера в исходной реализации smalltalk Модель будет наблюдать представление об изменениях, что уже не так, поскольку серверная часть просто не может наблюдать элементы html в браузере пользователей. Вместо этого, если представление изменяется, представление отправит запрос контроллеру, который затем обновит представление. Опять же, первоначальная реализация MVC не соблюдается, поскольку обновление модели будет означать, что все виды, зависящие от модели, будут обновлены.
Современные веб-фреймворки следуют простой трехуровневой архитектуре, также известной как архитектура Model 2.
Конечно, в Интернете есть примеры реальных архитектур MVC, но они часто относятся только к клиентской части и подключены к серверу, который следует архитектуре модели 2, поскольку представления представляют собой xml и json и не наблюдаются для изменений. Примерами чистых архитектур mvc на стороне клиента являются Sencha Touch и Sproutcore.
Если у вас есть MVC в браузере, mvc как на сервере и mvc как уровень данных, у вас есть иерархическая реализация mvc.
Заметка. Я говорил только о веб-фреймворках, у других реализаций MVC, таких как java swing и Flex, есть и другие отличия в реализации.
источник
Одна вещь, которую вы должны знать, состоит в том, что существует столько разновидностей MVC, сколько существует фреймворков, претендующих на реализацию MVC.
Большинство согласны с тем фактом, что Модель содержит какое-то состояние, а Представление отображает его. Но у Контролера очень разные роли.
В Smalltalk, где она была впервые описана, Модель является ядром вашего приложения, данных и бизнес-методов. Представление является графическим представлением состояния приложения (он же Модель), а Контроллер управляет событиями пользовательского ввода, мыши и клавиатуры. Контроллер, например, направляет события клавиатуры в элемент представления, имеющий фокус.
На страницах .jsp Модель в основном представляет собой данные, представление отображает эту модель в HTML, а контроллер выполняет маршрутизацию модели в надлежащее представление для ее отображения.
Итак, чтобы ответить на ваш вопрос, хотя MVC используется как в автономных приложениях (Java, .Net, Flex), так и в Интернете (страницы JSP), это совсем другое. Это означает, что MVC, который вы знаете, не используется в автономных приложениях.
источник