Каково различие между ViewModel и Контроллером?

Я мог бы сказать что-то непопулярное здесь: id() довольно специализированная встроенная функция, которая редко используется в бизнес-логике. Поэтому я не вижу проблемы в использовании его как имя переменной в трудной и правильно написанной функции, где ясно, что идентификатор не означает встроенную функцию.

25
задан MedicineMan 11 December 2009 в 21:07
поделиться

6 ответов

ViewModel - это шаблон, используемый для обработки логики представления и состояния представления, а контроллер является одной из основных частей любой инфраструктуры MVC, он отвечает на любой HTTP-запрос и организует все последующие действия до HTTP-ответа.

Шаблон ViewModel: Подробнее

В шаблоне ViewModel пользовательский интерфейс и любая логика пользовательского интерфейса инкапсулирована в Посмотреть. Представление наблюдает за ViewModel который инкапсулирует логику представления и состояние. ViewModel в свою очередь взаимодействует с Моделью и действует как посредник между ним и Просмотр.

View <-> ViewModel <-> Model

Контроллеры (поступают из шаблона переднего контроллера): Дополнительная информация

Он "обеспечивает централизованную точку входа для обработки запросов ».

HTTP Request -> Controller -> (Model,View)

- Простые различия: -

  • Хотя ViewModel является необязательным паттерн Контроллер необходим, если вы идете по пути MVC.
  • ViewModel инкапсулирует логика и состояние представления. Контроллер организует все Поток приложения.
23
ответ дан 28 November 2019 в 21:39
поделиться

Для генерации некоторых данных (структурированных или полуструктурированных) следует задействовать некоторую логику и модель. Из этих данных возвращенная страница / JSON / etc. создается, как правило, с помощью только элементарной схематической логики.

Первая часть (создание данных) выполняется контроллером (обычно через модель). Вторая часть - View. ViewModel - это структура данных, передаваемая между контроллером и представлением, и обычно она содержит только методы доступа.

1
ответ дан 28 November 2019 в 21:39
поделиться

Я думаю, что есть некоторая ценность в изучении принятой доктрины. Но также важно понять, как доктрина стала такой, какая она есть.

Трюгве Реенскауг широко известен как изобретатель MVC. Статья Н. Алекса Руппа За пределами MVC: новый взгляд на архитектуру сервлетов включает в себя историю MVC. В разделе, посвященном работе Рейнскога в 1978 году в Исследовательском центре Xerox в Пало-Альто, есть ссылка на его статью Thing-Model-View-Editor: Пример из системы планирования . Здесь элементы описаны следующим образом.

Thing

Что-то, что представляет интерес для пользователя. Это может быть бетон, например, дом или интегрированный цепь. Он может быть абстрактным, например, новая идея или мнение о работе. Это могло быть целое, как компьютер, или его часть, как элемент схемы.

Модель

Модель - это активное представление абстракции в форме данных в вычислительной среде. система

Представление

К любой данной Модели прикреплено одно или несколько Представлений, каждое Представление способно показ одного или нескольких графических изображений Модели на экране и на бумажном носителе. А View также может выполнять такие операции с моделью, которая обоснованно связана с этим представлением.

Редактор

Редактор - это интерфейс между пользователем и одним или несколькими представлениями. Он предоставляет пользователю подходящую систему команд, например, в виде меню, которое может динамически меняться. в соответствии с текущим контекстом. Это обеспечивает просмотрам необходимую координацию и командные сообщения.

Рупп идентифицирует Редактора Реенскауга как Контроллер или Инструмент .

Триады MVC появились в SmallTalk-80. Модель была абстракцией реальной концепции, представление было ее визуальным представлением, а контроллер - кнопками и ползунками, которые позволяли пользователю взаимодействовать с ней (тем самым «управляя» представлением). Все части в триаде были взаимосвязаны и могли взаимодействовать с двумя другими частями, поэтому не было задействовано наслоение или абстракция. С тех пор Реенскауг «предпочел использовать термин Инструмент, а не Контроллер». Согласно его заметкам, это термины, которые он использовал в более поздних реализациях

1
ответ дан 28 November 2019 в 21:39
поделиться

Модель-представление-контроллер (MVC) - это шаблон архитектурного проектирования, который существует, прежде всего, для отделения бизнес-логики от представления. По сути, вы не хотите, чтобы серверная часть касалась вашей передней части. Обычно это выглядит так:

alt text

Причины для этого заключаются в том, что, разделяя серверную часть и переднюю часть, вы не привязываете свой пользовательский интерфейс напрямую к вашим данным / работе. Это позволяет вам добавлять новые интерфейсы в вашу бизнес-логику, не затрагивая указанную логику. Кроме того, это также упрощает тестирование.

Простой пример того, где может пригодиться MVC - let ' Скажем, у вас есть приложение, которое управляет финансами вашей компании. Теперь, если вы правильно используете MVC, у вас может быть внешний интерфейс, который находится за столом какого-либо финансиста и позволяет ему обрабатывать транзакции, управлять финансами и т. Д. НО, поскольку бизнес-логика является отдельной, вы также можете предоставить интерфейс в Blackberry вашего генерального директора, который позволяет ему видеть текущее состояние бизнеса. Поскольку два внешних интерфейса различны, они могут выполнять разные действия, при этом обеспечивая (разные типы) доступа к данным.

РЕДАКТИРОВАТЬ:

Поскольку вы немного обновили свой вопрос, я обновлю свой ответ. В разделении MVC нет совершенной науки. Однако есть несколько хороших практических правил. Например, если вы говорите о компонентах графического интерфейса, это, вероятно, представление. (Вы говорите о внешнем виде, удобстве использования и т. Д. ) Если вы говорите о данных и «деловой» стороне дома (базы данных, логика и т. Д.), Вы, вероятно, имеете в виду модель. И все, что управляет взаимодействием между ними, скорее всего, является контроллером.

Кроме того, следует отметить, что, хотя представления и модели обычно «физически» разделены, контроллер может существовать с представлением, когда это имеет смысл .

Вы правы, когда говорите, что структура (или даже язык) для MVC не имеет значения. Сам по себе шаблон не зависит от языка и действительно описывает способ построения вашей системы.

Надеюсь, что это поможет!

Следует отметить, что, хотя представления и модели обычно «физически» разделены, контроллер может существовать с представлением, когда это имеет смысл.

Вы правы, когда говорите, что структура (или даже язык) для MVC не дело. Сам по себе шаблон не зависит от языка и действительно описывает способ построения вашей системы.

Надеюсь, что это поможет!

Следует отметить, что, хотя представления и модели обычно «физически» разделены, контроллер может существовать с представлением, когда это имеет смысл.

Вы правы, когда говорите, что структура (или даже язык) для MVC не дело. Сам по себе шаблон не зависит от языка и действительно описывает способ построения вашей системы.

Надеюсь, что это поможет!

2
ответ дан 28 November 2019 в 21:39
поделиться

Модель представляет ваши данные и способы их обработки. Таким образом, модель касается БД.

Вид - это ваш пользовательский интерфейс.

Контроллер - это связующее звено между ними.

0
ответ дан 28 November 2019 в 21:39
поделиться

MVC stands for Model, View, Controller.

Model = Data (Database tables)

View = HTML, CSS, JavaScript, etc

Controller = Main logic, a contract between Model & View.

In simple and graspable terms,

MVC allows you to develop your applications in a way that your business data and presentation data are separated. With this, a developer and designer can work independently on a MVC app without their work clashing. MVC makes your app avail OOP too.

-4
ответ дан 28 November 2019 в 21:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: