Я мог бы сказать что-то непопулярное здесь: id()
довольно специализированная встроенная функция, которая редко используется в бизнес-логике. Поэтому я не вижу проблемы в использовании его как имя переменной в трудной и правильно написанной функции, где ясно, что идентификатор не означает встроенную функцию.
ViewModel - это шаблон, используемый для обработки логики представления и состояния представления, а контроллер является одной из основных частей любой инфраструктуры MVC, он отвечает на любой HTTP-запрос и организует все последующие действия до HTTP-ответа.
Шаблон ViewModel: Подробнее
В шаблоне ViewModel пользовательский интерфейс и любая логика пользовательского интерфейса инкапсулирована в Посмотреть. Представление наблюдает за ViewModel который инкапсулирует логику представления и состояние. ViewModel в свою очередь взаимодействует с Моделью и действует как посредник между ним и Просмотр.
View <-> ViewModel <-> Model
Контроллеры (поступают из шаблона переднего контроллера): Дополнительная информация
Он "обеспечивает централизованную точку входа для обработки запросов ».
HTTP Request -> Controller -> (Model,View)
- Простые различия: -
Для генерации некоторых данных (структурированных или полуструктурированных) следует задействовать некоторую логику и модель. Из этих данных возвращенная страница / JSON / etc. создается, как правило, с помощью только элементарной схематической логики.
Первая часть (создание данных) выполняется контроллером (обычно через модель). Вторая часть - View. ViewModel - это структура данных, передаваемая между контроллером и представлением, и обычно она содержит только методы доступа.
Я думаю, что есть некоторая ценность в изучении принятой доктрины. Но также важно понять, как доктрина стала такой, какая она есть.
Трюгве Реенскауг широко известен как изобретатель MVC. Статья Н. Алекса Руппа За пределами MVC: новый взгляд на архитектуру сервлетов включает в себя историю MVC. В разделе, посвященном работе Рейнскога в 1978 году в Исследовательском центре Xerox в Пало-Альто, есть ссылка на его статью Thing-Model-View-Editor: Пример из системы планирования . Здесь элементы описаны следующим образом.
Thing
Что-то, что представляет интерес для пользователя. Это может быть бетон, например, дом или интегрированный цепь. Он может быть абстрактным, например, новая идея или мнение о работе. Это могло быть целое, как компьютер, или его часть, как элемент схемы.
Модель
Модель - это активное представление абстракции в форме данных в вычислительной среде. система
Представление
К любой данной Модели прикреплено одно или несколько Представлений, каждое Представление способно показ одного или нескольких графических изображений Модели на экране и на бумажном носителе. А View также может выполнять такие операции с моделью, которая обоснованно связана с этим представлением.
Редактор
Редактор - это интерфейс между пользователем и одним или несколькими представлениями. Он предоставляет пользователю подходящую систему команд, например, в виде меню, которое может динамически меняться. в соответствии с текущим контекстом. Это обеспечивает просмотрам необходимую координацию и командные сообщения.
Рупп идентифицирует Редактора Реенскауга как Контроллер или Инструмент .
Триады MVC появились в SmallTalk-80. Модель была абстракцией реальной концепции, представление было ее визуальным представлением, а контроллер - кнопками и ползунками, которые позволяли пользователю взаимодействовать с ней (тем самым «управляя» представлением). Все части в триаде были взаимосвязаны и могли взаимодействовать с двумя другими частями, поэтому не было задействовано наслоение или абстракция. С тех пор Реенскауг «предпочел использовать термин Инструмент, а не Контроллер». Согласно его заметкам, это термины, которые он использовал в более поздних реализациях
Модель-представление-контроллер (MVC) - это шаблон архитектурного проектирования, который существует, прежде всего, для отделения бизнес-логики от представления. По сути, вы не хотите, чтобы серверная часть касалась вашей передней части. Обычно это выглядит так:
Причины для этого заключаются в том, что, разделяя серверную часть и переднюю часть, вы не привязываете свой пользовательский интерфейс напрямую к вашим данным / работе. Это позволяет вам добавлять новые интерфейсы в вашу бизнес-логику, не затрагивая указанную логику. Кроме того, это также упрощает тестирование.
Простой пример того, где может пригодиться MVC - let ' Скажем, у вас есть приложение, которое управляет финансами вашей компании. Теперь, если вы правильно используете MVC, у вас может быть внешний интерфейс, который находится за столом какого-либо финансиста и позволяет ему обрабатывать транзакции, управлять финансами и т. Д. НО, поскольку бизнес-логика является отдельной, вы также можете предоставить интерфейс в Blackberry вашего генерального директора, который позволяет ему видеть текущее состояние бизнеса. Поскольку два внешних интерфейса различны, они могут выполнять разные действия, при этом обеспечивая (разные типы) доступа к данным.
РЕДАКТИРОВАТЬ:
Поскольку вы немного обновили свой вопрос, я обновлю свой ответ. В разделении MVC нет совершенной науки. Однако есть несколько хороших практических правил. Например, если вы говорите о компонентах графического интерфейса, это, вероятно, представление. (Вы говорите о внешнем виде, удобстве использования и т. Д. ) Если вы говорите о данных и «деловой» стороне дома (базы данных, логика и т. Д.), Вы, вероятно, имеете в виду модель. И все, что управляет взаимодействием между ними, скорее всего, является контроллером.
Кроме того, следует отметить, что, хотя представления и модели обычно «физически» разделены, контроллер может существовать с представлением, когда это имеет смысл .
Вы правы, когда говорите, что структура (или даже язык) для MVC не имеет значения. Сам по себе шаблон не зависит от языка и действительно описывает способ построения вашей системы.
Надеюсь, что это поможет!
Следует отметить, что, хотя представления и модели обычно «физически» разделены, контроллер может существовать с представлением, когда это имеет смысл.Вы правы, когда говорите, что структура (или даже язык) для MVC не дело. Сам по себе шаблон не зависит от языка и действительно описывает способ построения вашей системы.
Надеюсь, что это поможет!
Следует отметить, что, хотя представления и модели обычно «физически» разделены, контроллер может существовать с представлением, когда это имеет смысл.Вы правы, когда говорите, что структура (или даже язык) для MVC не дело. Сам по себе шаблон не зависит от языка и действительно описывает способ построения вашей системы.
Надеюсь, что это поможет!
Модель представляет ваши данные и способы их обработки. Таким образом, модель касается БД.
Вид - это ваш пользовательский интерфейс.
Контроллер - это связующее звено между ними.
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.