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

14

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

MVC provides front and back ends for the database, the user, and the data processing components. The separation of software systems into front and back ends simplifies development and separates maintenance.

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

Ваш Ответ

5   ответов
1

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

3
  • views = frontend
  • models = backend
  • controllers = glue between frontend and backend
Это не объясняет, где живут контроллеры.
9

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

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

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

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

35

Хорошо .. первые условия:

  • Frontend - are the parts, which are visible to users: HTML, CSS, client-side Javascript. It all is basically "frontend". In a desktop application frontend would be the GUI.
  • Backend - is the invisible part. In web applications that is your java, ruby, php or any other serverside code. It can be either interpreted or compiled, because "how" it works has no impact on "what" it is.

Если вы читаетеGUI Architectures и исследовать паттерн MVC в целом, вы поймете, чтоMVC is not about separation of backend and frontend, Особенно когда дело доходит доОбразцы в стиле MVC, что мы используем для веб-приложений.

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

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

  • Model - business logic
  • View - presentation logic
  • Controller - changing state of model and view (based on user input)

Давайте возьмем пример:

  • alternative client application for twitter
  • uses OAuth for authentication
  • user can input different search phrases
  • takes information via Twitter's REST API
  • validates data
  • parses the JSON responses
  • manipulates DOM to present the information

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

*Conclusion: You can use MVC pattern both on backend and frontend.**

Post Scriptum

Поскольку вы разрабатывали некоторые приложения с помощью Rails, ваше понимание MVC может быть, но искажено. Причина, по которой я это говорю, заключается в том, что, поскольку RoR изначально создавался как прототип(notice all the scaffolding and other features for generating throw-away code)и из-за своего происхождения Rails фактически реализует очень анемичную версию MVP.

Я называю это "анемичным", потому что ониnerfed оба просмотра(it should be a passive object in MVP, not a simple template) и модель слоя(yes, it is supposed to be a complicated layer, not a collection of ORM instances).

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

Второй как можно ближе к исходному определению шаблона. Это вместе с «GUI Architectures» статья, должна предоставить вам твердую опору на эту тему. А книга PoEAA (в прочтении, кстати) даст вам контекст для ее расширения.

Отлично, это действительно полезный ответ! Спасибо за ваши ссылки, это помогает мне получить более глубокое понимание. В этом и заключается смысл: я начал создавать приложения с Rails и продолжал создавать приложения для устройств iOS с Rails в качестве Backend. Поэтому я попытался понять, какую позицию приложение Rails занимает в шаблоне Model-View-Controller iOS-приложения. Kirinriki

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