Python / социальная сеть GAE / cms? - PullRequest
       6

Python / социальная сеть GAE / cms?

4 голосов
/ 09 сентября 2010

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

Перед тем, как спросить о конкретных компонентах, вот некоторые ключевые особенности сайта, которые необходимо построить:

  • современный почти настольный графический интерфейс
  • будущая возможность размещения расширенного html5-приложения (например, http://www.lucidchart.com)
  • высокая масштабируемость как для функциональности, так и для пользовательской нагрузки
  • возможность пользователя защитить паролем и разрешить управление контентом для каждого элемента / группы
  • Типичные функции социальной сети
  • возможность создания уменьшенной мобильной версии в будущем

Вот список инструментов, которые я собираюсь использовать:

Google App Engine
питон Джанго Pinax пижама WxPython

И вопросы:

  1. Google App Engine - это попытка сократить погоню, поскольку многие кусочки головоломки, кажется, находятся на своем месте. Вопрос: я ограничиваю свои варианты этим выбором? Пример: хранилище данных не является реляционным? Мне ждать для поддержки SQL в версии для бизнеса?

  2. Python - Сначала я рассматривал «drupal», но в конце концов решил, что зависеть от модулей, которые могут или может не существовать завтра + ограничения его системы шаблонов - нет-нет. Изучение его API тоже было бы бесполезным в других местах. тогда как Python выглядит как швейцарский армейский нож языков - хорош практически для всего. Вопрос: v.2.5.2 требуется GAE, но python.org рекомендует 2.5.5. Что мне установить?

  3. Django - v.0.96 встроен в GAE. Кажется, вы можете обновить его. Вопросы: есть ли причина не обновляться до последней версии? Как обойти отсутствие поддержки HTML5?

  4. Pinax (http://pinaxproject.com) Находится на вершине Django и, кажется, обеспечивает большую часть функциональности социальной сети кто-нибудь захочет. Вопрос: причины НЕ использовать это? Альтернативы?

  5. Пижама и wxPython - это та часть, которая немного сбивает с толку. Основная идея, стоящая за ними, заключается в способности построить графический интерфейс. Я рассмотрел Silverlight и Flash до GAE / Python, но несколько рабочих версий Приложения HTML5 убедили меня, что этого достаточно, УЖЕ работает на последней партии браузеров, чтобы выбрать HTML5 / Javascript маршрут вместо Вопрос: Как мне расширить / дополнить Python / Django для создания HTML5-интерфейса, похожего на приложение? Являются ли пижамы и wxPython путь? Или я должен полностью изменить свое мышление?

Ответы на некоторые / любые из этих вопросов будут очень полезны. Пожалуйста, извините за мое невежество, если что-то из этого не имеет особого смысла. Моим последним предприятием в области веб-программирования был сайт LAMP приличного размера около 5-6 лет назад. На настольной стороне вещей, мой опыт программирования сводится к языкам сценариев очень высокого уровня, которые я продолжаю изучать, чтобы достигнуть очень специфических задачи:)

1 Ответ

3 голосов
/ 02 июня 2011

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

Это создает свои собственные проблемы: из-за большого количества файлов и памяти, используемых приложением Django, ваш код будет выгружен из памяти быстро после простоя приложения. Это означает, что посетители будут часто сталкиваться примерно с 6-секундной задержкой при просмотре первой страницы после того, как код сайта был выгружен из памяти, пока GAE распаковывает сжатые модули. Если ваш сайт занят, это не будет проблемой, но пока ваш сайт еще молодой и неизвестный, это вызовет проблемы с производительностью. : - (

Во-вторых, я также работал в компании, которая создала собственную CMS и могу сказать, что первые 80% довольно просты, особенно с современными фреймворками. Однако остальное может быть довольно сложным. Например, роли пользователей и пользовательские типы контента являются двумя сложными аспектами. Поэтому настоятельно рекомендуем встать на спину гигантов и найти систему CMS или CMS, которая почти идеально соответствует вашим потребностям, а затем расширить ее, чтобы сделать дополнительный бит, который вам нужен.

Итак, что сказал, отвечая на ваши очки:

  1. Да, вы ограничиваете свои возможности, но это может быть нормально. Большинству разработчиков удобнее использовать реляционную модель, чем модель nosql. Поэтому больше программного обеспечения с открытым исходным кодом создается с учетом этого. Кроме того, GAE является платформой с закрытым исходным кодом, которая также является сдерживающим фактором для разработчиков с открытым исходным кодом. App Engine Oil - это среда CMS, которая может вам подойти и оптимизирована для App Engine. Также посмотрите на web2py , который поддерживает GAE.

  2. Я оказался очень продуктивным с Python. Раньше я много писал на PHP, но теперь это уродливо. Тем не менее, подумайте об общем количестве строк кода, которые вам придется написать. Если вы можете заставить Drupal работать с высококачественными готовыми модулями, вам может понадобиться только 1/10 кода. Кстати, хитрость с Drupal состоит в том, чтобы использовать в основном только высококачественные модули. Посмотрите на историю, убедитесь, что не используете версии разработки. Попробуйте связаться с авторами по IRC. Я не говорю, что вы должны использовать Drupal, но возможно иметь надежный сайт (например, whitehouse.gov)

  3. Вы находитесь в классической задаче GAE / Django. Если вы используете 0,96, вы получаете отличную производительность, но вам не хватает многих замечательных функций 1,0+, и вы не получаете ORM и всех его преимуществ. Если вы используете более новую версию Django, у вас возникают проблемы с производительностью / памятью, упомянутые выше.

  4. Я собираюсь исследовать пинакс для моей компании. Я сделал очень взгляд курсора на это. Я не знаю, имеет ли он хорошую поддержку для бэкэндов нереляционных моделей. Вы, вероятно, должны смотреть на Джанго-Нонрел. Однако знайте, что вы собираетесь инвестировать в относительно неопробованные решения здесь. Небольшой процент пользователей Django используют Pinax, а еще меньший процент, если таковой имеется, использует его на нереляционном бэкэнде. Поэтому вы будете в очень экспериментальном сценарии, который вы упомянули в пункте 2 выше.

  5. Я не могу предложить личный опыт. Я исследовал пижаму несколько раз. Однако я люблю писать HTML CSS и JS. Мне нравится иметь контроль. Мне нравится прогрессивное улучшение и знание того, что увидят пользователи, если у них не будет всех возможностей. Кроме того, я думаю, что любое новое приложение, которое явно не предназначено для мобильных клиентов, неявно стреляет в себя. Целых 15% интернет-пользователей используют Интернет только через свои смартфоны. Какой опыт они получат с пижамой?

  6. Вы не упомянули об этом, но одну вещь, которую я учитывал при выборе платформы, - это привязка к поставщику и переносимость. Если вы разрабатываете свое решение для GAE и обнаруживаете, что не можете делать то, что хотите, сможете ли вы перенести его на другое решение в другом месте? Сколько работы это займет? Если вы интенсивно программируете для GAE или берете на себя обязательства по его архитектуре, вы застряли с ней или переписали, чтобы переместиться. Использование Django или Web2py может помочь смягчить это.

Тем не менее, большое преимущество Python GAE заключается в том, что вы получаете очень продуктивную работу, мгновенно просматриваете свои результаты, получаете бесплатный хостинг, пока ваш сайт небольшой, и получаете отличную масштабируемость. Это не мелочи. Там есть большая ценность.

...