Ответ 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 экземпляры).
Я бы рекомендовал вам прочитать две публикации, чтобы лучше понять суть темы:
- Шаблоны архитектуры корпоративных приложений.. обязательное чтение для серьезных разработчиков
- Описание парадигмы пользовательского интерфейса Model-View-Controller в системе Smalltalk-80
Второй - как можно ближе к исходному определению шаблона. Это, вместе с статьей "GUI Architectures", должно обеспечить вам прочную основу по этому вопросу. И книга PoEAA (hard read, btw) даст вам контекст, в котором можно расширить его.