Реализует ли шаблон MVC общие задачи веб-фреймворка?
Общие задачи фреймворка веб-приложений (например, Django, Laravel,.NET или beego):
request / response abstraction
session state
user authentication & authorisation
page templating
URL mapping
DB access
security
caching
Шаблон проектирования MVC реализует перечисленные выше общие задачи, как показано ниже:
Сопоставление URL-адресов обрабатывается компонентом контроллера MVC. Контроллер направляет запросы обработчикам. Пример:
http.ServeMux
это контроллер из пакета GOLangАбстракция запроса / ответа выполняется Контроллером путем регистрации обработчиков, написанных веб-разработчиком, как показано ниже:
sm := http.NewServeMux() // in GoLang sm.Handle("/", productHandler)
состояние сеанса обрабатывается кодом обработчика, написанным веб-разработчиком
Шаблоны страниц обрабатываются механизмом шаблонов (компонентом представления) MVC.
аутентификация и авторизация пользователя обрабатываются кодом обработчика, написанным веб-разработчиком
Доступ к БД осуществляется модельным компонентом MVC.
безопасность и кеширование обрабатываются кодом обработчика, написанным веб-разработчиком
Правильно ли это понимание шаблона проектирования MVC для реализации общих задач фреймворка веб-приложений?
1 ответ
Существует множество определений шаблона MVC. Со временем он развивался и использовался по-разному в разных структурах и контекстах. Когда его изобрели, не было протокола HTTP и не было части запроса / ответа. Были и другие способы обработки запроса пользователя. Со временем были изобретены новые механизмы шаблонов, и HTTP стал доминирующим протоколом в сети.
MVC считается чистым шаблоном представления, поскольку он в основном управляет представлениями и моделью (какую бы модель ни представляла). Кроме того, одной из основных причин изобретения MVC является разделение ответственности. Важно, чтобы он был чистым, коротким и позволял другим слоям позаботиться о логике.
Общая задача фреймворка веб-приложения - служить контейнером IoC (инверсия управления) и позволять его компоненту заботиться о конкретных обязанностях. Итак, если это веб-фреймворк, он, вероятно, будет иметь компоненты сеанса, cookie, MVC...
- Методы контроллера - это просто реализация HTTP-интерфейса. Отображение URL-адресов можно рассматривать как аргумент метода контроллера.
- Запрос / ответ обрабатываются веб-компонентом (сервлет в Java)
- Состояние сеанса обрабатывается компонентом сеанса и может быть настроено разработчиком, например, время истечения сеанса или тип файла cookie сеанса или даже тип сеанса (база данных, в памяти)
- Верный
- Обычно во фреймворке есть проверенный компонент аутентификации, но его можно написать вручную (не рекомендуется)
- Доступ к БД обрабатывается уровнем персистентности, таким как JDBC в Java. Модель в MVC отвечает за данные, которые должны быть представлены на экране или отправлены пользователем.
- То же, что и 5