Джанго -vs- Граилс -vs-? - PullRequest
       17

Джанго -vs- Граилс -vs-?

22 голосов
/ 16 сентября 2008

Мне интересно, есть ли такая вещь, как Django-подобная простота разработки веб-приложений в сочетании с хорошим развертыванием, отладкой и другими инструментами?

Django - очень продуктивная среда для создания сайтов, насыщенных контентом; лучшее, что я пробовал, и глоток свежего воздуха по сравнению с некоторыми чудовищами Java там. Тем не менее, он написан на Python, что означает небольшую реальную поддержку в развертывании / упаковке, отладке, профилировщиках и других инструментах, которые значительно упрощают создание и поддержку приложений.

В Ruby есть схожие проблемы, и хотя мне нравится Ruby намного лучше, чем Python, у меня складывается впечатление, что Rails находится примерно в одной лодке в Django, когда речь заходит об управлении / поддержке приложения.

Кто-нибудь здесь пробовал Django и Grails (или другие веб-фреймворки) для нетривиальных проектов? Как они сравнивались?

Ответы [ 9 ]

30 голосов
/ 24 декабря 2009

Вы просили кого-то, кто использовал и Grails, и Django. Я сделал работу над обоими для больших проектов. Вот мои мысли:

IDE, Django действительно хорошо работает в Eclipse, Grails очень хорошо работает в IntelliJ Idea.

Debugging: Практически то же самое (при условии, что вы используете IntelliJ для Grails и Eclipse для Python). Пошаговая отладка, проверка переменных и т. Д. Никогда не требуют оператора print для них. Иногда сообщения об ошибках django могут быть бесполезными, но сообщения об ошибках Grails, как правило, довольно длинные и их трудно разобрать.

Время выполнения модульного теста: Джанго: 2 секунды. Grails: 20 секунд (сами тесты выполняются за доли секунды, это часть загрузки фреймворка для запуска их, которая берет остальное ... как вы можете видеть, Grails ужасно медленно загружается).

Развертывание: Django: скопируйте и вставьте один файл в конфигурацию apache, а для повторного развертывания просто измените код и перезагрузите apache. Grails: создайте файл .war, разверните его на tomcat, промойте и повторите для повторного развертывания.

Языки программирования: Groovy ПОЛНОСТЬЮ потрясающий. Я люблю это больше, чем Python. Но у меня конечно нет претензий.

Плагины: Grails: множество неработающих плагинов (и может использовать каждый java lib). Django: несколько стабильных плагинов, но достаточно, чтобы сделать большинство того, что вам нужно.

База данных: Джанго: миграция схемы с использованием юга и в целом интуитивные отношения. Grails: нет миграций схемы, и по умолчанию он удаляет базу данных при запуске ... WTF

Использование: Django: стартапы (особенно в Gov 2.0), независимые магазины веб-разработчиков. Граальс: предприятие

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

10 голосов
/ 04 января 2010

Утверждение, что grails удаляет базу данных при запуске , полностью неверно. Его поведение при запуске полностью настраивается и легко настраивается. Я обычно использую create-drop при запуске приложения в режиме разработки. Я использую обновление, когда я запускаю тестирование и производство.

Мне также нравится начальная обработка, которая позволяет предварительно настраивать тестовых пользователей, данные и т. Д. В среде Grails.

Мне бы хотелось, чтобы кто-то, кто действительно создал и развернул некоторые коммерческие проекты, прокомментировал плюсы и минусы. Будь действительно интересным читателем.

10 голосов
/ 17 сентября 2008

Однако написано на Python, который означает, что есть небольшая реальная поддержка в способ развертывания / упаковки, отладка, профилировщики и другие инструменты которые делают строительство и поддержание приложения гораздо проще.

Python имеет:

  1. a отличный интерактивный отладчик , который очень хорошо использует Python REPL .
  2. easy_install anv virtualenv для управления зависимостями, упаковки и развертывания.
  3. функции профилирования сопоставимы с другими языками

Так что ИМХО вам не стоит беспокоиться об этом, используйте Python и Django и живите счастливо: -)

К счастью для вас, новейшая версия Django работает на Jython , так что вам не нужно оставлять всю свою экосистему Java позади.

Говоря о фреймворках, я оценил в этом году:

  1. Пилоны (Python)
  2. webpy (Python)
  3. Symfony (PHP)
  4. CakePHP (PHP)

Ни один из этих фреймворков не приближается к возможностям Django или Ruby on Rails. Исходя из моего мнения коллег, я мог бы порекомендовать вам kohana framework. Недостатком является то, что он написан на PHP, и, насколько мне известно, PHP не имеет превосходных инструментов для отладки, профилирования и упаковки приложений.

Редактировать: Вот очень хорошая статья о упаковке и развертывании приложений Python (в частности, приложений Django). Сейчас это горячая тема в сообществе Django.

10 голосов
/ 20 января 2009

Grails.

Grails просто выглядит как Rails (Ruby), но использует groovy, который проще, чем Java. Он использует технологию Java, и вы можете без проблем использовать любую библиотеку Java.

Я также предпочитаю Grails из-за простоты, и есть много java-библиотек (таких как jasper report, jawr и т. Д.), И я рад, что теперь они присоединяются к SpringSource, что делает их основу прочной.

3 голосов
/ 19 сентября 2008

Проблема "хорошего развертывания" - для Python - не имеет такого глубокого значения, как для Java.

Развертывание Python для Django - это "перемещение файлов". Вы можете запустить прямо из каталога транка Subversion, если хотите.

Вы можете без особых усилий использовать Python distutils и создать собственный дистрибутив, который помещает ваши приложения Django в пакеты сайтов Python. Я не большой поклонник этого, но это действительно легко сделать.

Поскольку мой материал работает в Linux, у меня есть простые сценарии "install.py", которые перемещают материал из каталогов Subversion в каталоги /opt/this и /opt/that. Я использую настройки явного пути в своей конфигурации Apache для именования тех каталогов, в которых находятся приложения.

Исправление может быть сделано путем редактирования файлов на месте. (Плохая политика.) Я предпочитаю редактировать в расположении SVN и перезапустить мою маленькую установку, чтобы убедиться, что у меня фактически есть все файлы под контролем.

3 голосов
/ 17 сентября 2008

У меня есть два друга, которые первоначально начали писать приложение с использованием Ruby on Rails, но столкнулись с рядом проблем и ограничений. После 8 недель работы над ним они решили исследовать другие альтернативы.

Они остановились на Catalyst Framework и Perl. Это было около 4 месяцев назад, и они неоднократно говорили о том, насколько лучше работает приложение и насколько они более гибки.

С Perl у вас есть весь CPAN, а также большое количество инструментов. Я бы посоветовал хотя бы взглянуть на это.

1 голос
/ 17 сентября 2008

При "хорошем развертывании" вы сравниваете его с файлами EAR Java, которые позволяют развертывать веб-приложения путем загрузки одного файла на сервер J2EE? (И, в меньшей степени, файлы WAR; файлы EAR могут иметь файлы WAR для зависимых проектов)

Я не думаю, что Django или Rails дошли до этого момента, но я могу ошибаться ... Зубер указал на статью с более подробной информацией о Python.

Capistrano может помочь на стороне Ruby.

К сожалению, я не особо много работал с Python или Ruby, поэтому я не могу помочь с профилировщиками или отладчиками.

1 голос
/ 17 сентября 2008

Лично я сделал несколько довольно крупных проектов с Django, но я могу сравнить только с упомянутыми "montrosities" (Spring, EJB) и действительно низкоуровневыми вещами, такими как Twisted.

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

1 голос
/ 16 сентября 2008

cakephp.org

Cakephp действительно хорош, очень близко к рубину на рельсах (1.2). Он находится в php, очень хорошо работает на общих хостах и ​​прост в реализации.

Единственный недостаток в том, что документации немного не хватает, но вы быстро ее получаете и быстро начинаете делать классные вещи.

Я полностью рекомендую CakePHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...