В принципе Model-View-Controller, что такое Frontend и что такое Backend?

Википедия говорит:

MVC предоставляет передние и задние концы для базы данных, пользователя и компоненты обработки данных. Разделение программных систем на передний и задний концы упрощают разработку и отделяют обслуживание.

Я до сих пор не вижу связи между принципом модели-представления-контроллера и идеей front- и backend. Можно ли рассматривать модель с ее доступом к базе данных как бэкэнд и представление как интерфейс?

Ответ 1

OK.. сначала термины:

  • Frontend - это части, которые видны пользователям: HTML, CSS, клиентский Javascript. Все это в основном "интерфейс". В интерфейсе настольного приложения будет GUI.
  • Бэкэнд - это невидимая часть. В веб-приложениях это ваш java, ruby, php или любой другой код serveride. Его можно интерпретировать или компилировать, потому что "как" он работает, не влияет на "что" это.

Если вы читаете GUI Architectures и исследуете шаблон MVC в целом, вы поймете, что MVC это не разделение бэкэнд и интерфейса. Особенно, когда речь идет о шаблонах, вдохновленных MVC, которые мы используем для веб-приложений.

Цель MVC и связанных шаблонов - отделить представление от бизнес-логики домена.

Вот основные обязанности частей MVC:

  • Модель - бизнес-логика
  • Просмотр - логика представления
  • Контроллер - изменение состояния модели и вида (на основе ввода пользователем)

Возьмем пример:

  • альтернативное клиентское приложение для twitter
  • использует OAuth для аутентификации
  • пользователь может вводить разные поисковые фразы
  • берет информацию через Twitter REST API
  • проверяет данные
  • анализирует ответы JSON
  • манипулирует DOM для представления информации

Все это можно сделать с помощью клиентского JavaScript. У вас может быть триада MVC с "frontend"!. В то же время "бэкэнд", предоставляющий REST API, является MVC-подобной структурой. Только на этот раз представление генерирует ответы JSON вместо HTML.

* Вывод: Вы можете использовать шаблон MVC как для бэкэнд, так и для интерфейса. **

Post Scriptum

Поскольку вы создаете некоторые приложения с помощью Rails, ваше понимание MVC может быть искаженным. Причина, по которой я говорю это, состоит в том, что, поскольку RoR первоначально был создан как структура прототипирования (обратите внимание на все леса и другие функции для генерации кода выброса), и из-за его происхождения Rails фактически реализует очень анемичную версию MVP.

Я называю это "анемичным", потому что они подкрепили оба вида (это должен быть пассивный объект в MVP, а не простой шаблон) и слой модели (да, это должен быть сложный слой, а не коллекция ORM экземпляры).

Я бы рекомендовал вам прочитать две публикации, чтобы лучше понять суть темы:

Второй - как можно ближе к исходному определению шаблона. Это, вместе с статьей "GUI Architectures", должно обеспечить вам прочную основу по этому вопросу. И книга PoEAA (hard read, btw) даст вам контекст, в котором можно расширить его.

Ответ 2

Может быть, рисунок ниже может помочь.

MVC               Human language    backend/frontend
---------------   ---------------   ---------------
model          -> data           -> backend
controllers    -> actions        -> backend/frontend (depends on implementation)
views          -> GUI            -> frontend

Ответ 3

  • views = frontend
  • models = backend
  • controllers = клей между интерфейсом и бэкэнд

Ответ 4

Передняя часть - это то, что пользователь видит, какие являются представлениями. Задняя часть - это контроллеры и модель.

Ответ 5

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

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