Для чего я могу использовать архитектуру HMVC? - PullRequest
12 голосов
/ 22 февраля 2010

PHP-фреймворк, который я использую (Kohana), недавно реализовал архитектуру HMVC. Я читал, что это многослойный MVC, где запросы делаются друг на друга. Это немного похоже на ajax, просто на стороне сервера. Я применил это немного в некоторых экспериментах, но я не могу применить это к любому из моих проектов (потому что я не могу найти потребность в этом). Вы когда-нибудь использовали HMVC в проекте раньше? Как это тебе помогло?

Ответы [ 3 ]

14 голосов
/ 23 февраля 2010

Это немного похоже на ajax, только на стороне сервера.

Это хорошая аналогия.

HMVC удобен для добавления виджетов на страницы - модульных фрагментов контента, которые вы будете использовать на нескольких страницах. Например, виджет корзины покупок. Вы можете сделать одно и то же по-разному:

  1. Библиотека. Мы привыкли переносить повторно используемый код из контроллера в библиотеку. Затем из контроллера вы можете загрузить результаты вызова этой библиотеки в переменную представления.
  2. Вид. Вы можете загрузить представление (частичное) из основного представления. Это частичное представление может вытягивать контент из моделей. Вызов моделей из представлений не всегда популярен, но это не обязательно неправильно.

Однако у Kohana HMVC есть несколько преимуществ:

  1. Согласованность - запросы HMVC обрабатываются так же, как внешние запросы http.
  2. Power - запросы HMVC имеют те же ресурсы Kohana, что и запросы http, включая маршруты.
  3. Pluggability - При вызове из представления запрос HMVC не имеет связи между контроллером (который назначает результаты библиотеки для представления) и заполнителем представления. Вы касаетесь только одного файла, а не двух.

Я начинаю ценить случай с HMVC и масштабируемостью с http-запросами, связанными Kiall. То же самое можно сделать с CURL. Тем не менее, было бы более естественно проектировать с Kohana HMVC, чем CURL с самого начала.

8 голосов
/ 23 февраля 2010

Хорошо - Сэм де Фрейссинет (aka samsoir), один из разработчиков Kohana, недавно опубликовал статью, посвященную этому вопросу.

http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/

Хотя это не единственное использование для HMVC - это одно из его наиболее популярных применений. Эта статья в основном касается масштабируемости (например, количества запросов в секунду), но масштабируемость кода (например, насколько простым / сложным является поддерживаемый код) может быть «решена» с помощью тех же идей.

Надеюсь, это поможет:)

(Примечание: его примеры кода основаны на личных изменениях Сэма в Кохане - см. Примечание в конце статьи)

2 голосов
/ 02 мая 2011

В простом проекте вы, возможно, даже не найдете реального применения архитектурного шаблона HMVC. И ты даже не должен пытаться. Вот почему:

Весь смысл создания архитектуры HMVC состоял в том, чтобы сделать MVC немного DRY'er. Одним из основных преимуществ HMVC является повторное использование кода. Это позволяет вам иметь фрагменты, которые повторяются по всему вашему приложению (иногда в одном месте, в других случаях - нет).

Если вы пишете как небольшое тестовое приложение, повторяющихся фрагментов не будет. Таким образом, нет необходимости использовать весь потенциал HMVC. Вы просто получаете 1 уровень HMVC, который является вашим стандартным MVC.

Здесь вы можете прочитать оригинальную публикацию, в которой представлен HMVC. В 2000-х гг.

...