Реализует ли шаблон MVC общие задачи веб-фреймворка?

Общие задачи фреймворка веб-приложений (например, Django, Laravel,.NET или beego):

request / response abstraction 
session state 
user authentication & authorisation 
page templating 
URL mapping 
DB access 
security 
caching

Шаблон проектирования MVC реализует перечисленные выше общие задачи, как показано ниже:

  1. Сопоставление URL-адресов обрабатывается компонентом контроллера MVC. Контроллер направляет запросы обработчикам. Пример:http.ServeMuxэто контроллер из пакета GOLang

  2. Абстракция запроса / ответа выполняется Контроллером путем регистрации обработчиков, написанных веб-разработчиком, как показано ниже:

    sm := http.NewServeMux()     // in GoLang
    
    sm.Handle("/", productHandler)
    
  3. состояние сеанса обрабатывается кодом обработчика, написанным веб-разработчиком

  4. Шаблоны страниц обрабатываются механизмом шаблонов (компонентом представления) MVC.

  5. аутентификация и авторизация пользователя обрабатываются кодом обработчика, написанным веб-разработчиком

  6. Доступ к БД осуществляется модельным компонентом MVC.

  7. безопасность и кеширование обрабатываются кодом обработчика, написанным веб-разработчиком


Правильно ли это понимание шаблона проектирования MVC для реализации общих задач фреймворка веб-приложений?

1 ответ

Существует множество определений шаблона MVC. Со временем он развивался и использовался по-разному в разных структурах и контекстах. Когда его изобрели, не было протокола HTTP и не было части запроса / ответа. Были и другие способы обработки запроса пользователя. Со временем были изобретены новые механизмы шаблонов, и HTTP стал доминирующим протоколом в сети.

MVC считается чистым шаблоном представления, поскольку он в основном управляет представлениями и моделью (какую бы модель ни представляла). Кроме того, одной из основных причин изобретения MVC является разделение ответственности. Важно, чтобы он был чистым, коротким и позволял другим слоям позаботиться о логике.

Общая задача фреймворка веб-приложения - служить контейнером IoC (инверсия управления) и позволять его компоненту заботиться о конкретных обязанностях. Итак, если это веб-фреймворк, он, вероятно, будет иметь компоненты сеанса, cookie, MVC...

  1. Методы контроллера - это просто реализация HTTP-интерфейса. Отображение URL-адресов можно рассматривать как аргумент метода контроллера.
  2. Запрос / ответ обрабатываются веб-компонентом (сервлет в Java)
  3. Состояние сеанса обрабатывается компонентом сеанса и может быть настроено разработчиком, например, время истечения сеанса или тип файла cookie сеанса или даже тип сеанса (база данных, в памяти)
  4. Верный
  5. Обычно во фреймворке есть проверенный компонент аутентификации, но его можно написать вручную (не рекомендуется)
  6. Доступ к БД обрабатывается уровнем персистентности, таким как JDBC в Java. Модель в MVC отвечает за данные, которые должны быть представлены на экране или отправлены пользователем.
  7. То же, что и 5
Другие вопросы по тегам