2009-10-25 2 views
6

Я пытаюсь окунуться в Капучино. Я хотел бы, чтобы мои сверстники StackOverview рассмотрели архитектуру ниже и выяснили, имеет ли смысл ее использование - цель состоит в том, чтобы использовать уникальные преимущества Django и Cappuccino, не увеличивая вдвое больше, чем технологии перекрываются ...Cappuccino, Django, AJAX, и все это вместе - просмотрите мою архитектуру!

Когда запросы веб-браузера а 'дружественного' URL (например, /,/статьи и т.д.):

  • urls.py Джанго соответствует этому к зрения.
  • мнение, а не делать DJangos типичную работу Заполнив шаблона с местными жителями Сыроватского,
    возвращает небольшой HTML «заглушки», используемый в капуччино приложение напрямую.
  • Клиент получает капучино HTML
  • Клиент запрашивает объективном J JS URL-адрес, упомянутый в заглушке HTML
  • выполняется приложение конечного пользователя и , отображаемый в браузере

браузер теперь есть рабочее приложение. Когда пользователь делает что-то, что запрашивает что-то с сервера:

  • Браузер посылает XMLHTTPRequest в URL.
  • URL-адрес Django соответствует этому виду .
  • Вид работает, возможно, взаимодействует с моделью БД. Но вместо того, чтобы возвращать шаблон, Django возвращает некоторый JSON.
  • Клиент получает JSON, а выполняет все, что ему нужно.

Имеет ли это смысл? Мы по-прежнему пользуемся дружественными URL-адресами и создаваемой нами базой данных для моделирования нашего кода. Однако вместо того, чтобы использовать шаблоны, мы предоставляем страницы-заглушки Cappuccino и ответы JSON, чтобы дать пользователям нечто большее, чем реальное приложение, и менее похоже на движок HTML-шаблонов.

Возможно, есть лучший способ сделать что-то? Что используют другие питонисты? Спасибо за ваш отзыв.

ответ

4

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

Что касается остальных, это работает, и сообщество TurboGears делает это в течение многих лет (я был коммандером TG, так что я обычно использую). Архитектура TG, возвращающая словарь в шаблон, делает это тривиальным, поскольку вы просто устанавливаете «json» в качестве механизма шаблонов.

Выполнение того же самого в Django не намного сложнее. Просто используйте инструменты serialization, чтобы записать результат в ответ, а не использовать шаблонные вызовы.

Обратите внимание, что при такой архитектуре значительно упрощается управление, если вы храните всю логику приложения в одном месте. Помещение некоторой логики приложения в Django, а некоторые в браузере заставляют вещи быстро запутываться.Если вы рассматриваете свой сервер как немой уровень персистентности (за исключением проверки/аутентификации/авторизации), жизнь проще.

FWIW, я считаю, что Sproutcore будет работать легче, чем Cappuccino, если вы заинтересованы в более тяжелых прогрессивных усовершенствованиях.