Разработка приложения для HMVC и AJAX [Kohana 3.2] - PullRequest
2 голосов
/ 14 декабря 2011

В настоящее время я разрабатываю приложение, которое будет иметь несколько разных страниц, и каждая страница будет иметь компоненты, которые обновляются через AJAX. Макет аналогичен новому дизайну Twitter, где «Дом», «Обнаружение» и «Подключение» являются отдельными страницами, но для взаимодействия на странице (например, нажав «Подписчики» или «Следующие») используется AJAX.

Поскольку дизайн требует начальной загрузки страницы с несколькими компонентами (в контексте Twitter: твиты, подписчики, подписки), каждый из которых можно обновлять по отдельности через AJAX, я подумал, что было бы лучше иметь контроллер по умолчанию для обслуживания страниц и других контроллеров с действиями, которые, вместо того, чтобы обслуживать полные страницы, строго обрабатывают запросы к базе данных и возвращают объекты JSON. Таким образом, при начальной загрузке страницы можно выполнить несколько запросов HMVC для сбора данных для каждого компонента, а также можно выполнить вызовы AJAX для обновления каждого компонента по отдельности.

Моя идея состоит в том, чтобы иметь Controller_Default, который обрабатывает обслуживающие страницы. В контексте Twitter Controller_Default будет содержать:

action_home()
action_connect()
action_discover()

Тогда у меня были бы другие контроллеры, которые не имеют дело с полным обслуживанием страниц, а скорее с компонентами страниц. Например, в контексте Twitter Controller_Tweet может иметь:

action_get()

, который возвращает объект JSON, содержащий твиты для определенного пользователя. Затем Action_home () может сделать несколько запросов HMVC, чтобы получить данные для нескольких различных компонентов страницы (то есть сделать запросы для «твит / получение», «последователи / получение», «следование / получение»). В то время как на странице, однако, AJAX-вызовы могут быть сделаны для определенных функций контроллеров (то есть 'tweet / get'), чтобы обновить содержимое.

Мой вопрос: это хороший дизайн? Имеет ли смысл отправлять страницы через контроллер по умолчанию, а компоненты страниц (в формате JSON) - через другие контроллеры функций?

Если есть какие-либо сомнения относительно вопроса, пожалуйста, не стесняйтесь спрашивать разъяснения!

1 Ответ

0 голосов
/ 15 декабря 2011

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

Исходя из того, что вы указали выше, это было бы совершенно приемлемо в качестве способа предоставления контента клиенту; контроллер по умолчанию упаковывает подзапросы, что позволяет избежать нескольких вызовов AJAX от клиента для достижения одной и той же цели.

Два предложения, которые я мог бы сделать:

  1. Убедитесь, что ваши фоновые запросы в Твиттере абстрагируются и управляются в библиотеке, чтобы сделать приложение DRY'er и проще в обслуживании.
  2. Подумайте, выполняет ли контроллер по умолчанию только абсолютно необходимые вызовы для каждого запроса. Используйте кеширование, чтобы избежать редких изменений данных при каждом запросе (например, подписчики могут обновляться только каждые 30 секунд). Это, конечно, полностью зависит от требований вашего приложения, но если вы сильно загружены, вы можете быстро обнаружить, что ваш лимит запросов к API Twitter достигнут.

Одно последнее замечание: если вы обнаружите, что сервер испытывает высокую нагрузку, а запросы Twitter API требуют много времени для возврата, рассмотрите возможность предоставления другого сервера и установки копии вашего приложения. Затем вы можете «направить» подзапросы из приложения шлюза по умолчанию на ваш второй сервер приложений, что должно помочь сократить время отклика, если два сервера соединены высокоскоростной связью.

...