Django -vs-Grails -vs-?
Мне интересно, есть ли такая вещь, как удобство создания веб-приложений, подобная Django, в сочетании с хорошим развертыванием, отладкой и другими инструментами?
Django - очень продуктивная структура для создания сайтов с тяжелым содержанием; лучшее, что я пробовал, и дыхание свежего воздуха по сравнению с некоторыми из чудовищных явлений там. Однако это написано на Python, что означает небольшую реальную поддержку способа развертывания/упаковки, отладки, профилировщиков и других инструментов, которые значительно упрощают создание и обслуживание приложений.
Ruby имеет похожие проблемы, и хотя мне нравится Ruby намного лучше, чем мне нравится Python, у меня создается впечатление, что Rails находится примерно в одной лодке в Django, когда дело доходит до управления/поддержки приложения,
Кто-нибудь здесь попробовал как Django, так и Grails (или другие веб-фреймворки) для нетривиальных проектов? Как они сравнивались?
Ответы
Ответ 1
Вы попросили кого-то, кто использовал оба Grails и Django. Я работал над обоими проектами. Здесь мои мысли:
IDE,
Django отлично работает в Eclipse, Grails отлично работает в Idea IntelliJ.
Debugging:
Практически одинаково (если вы используете IntelliJ для Grails и Eclipse для Python). Отладка шага, проверка переменных и т.д.... никогда не требуется инструкция печати для обоих. Иногда сообщения об ошибках django могут быть бесполезными, но сообщения об ошибках Grails обычно довольно длинные и трудно разбираются.
Время запуска unit test:
django: 2 секунды.
Grails: 20 секунд (сами тесты выполняются в доли секунды, это часть загрузки загрузочного фреймворка, который занимает все остальное... как вы можете видеть, Grails с трудом медленно загружается).
Развертывание:
Django: скопируйте и вставьте один файл в конфигурацию apache и передислоцируйте, просто измените код и перезагрузите apache.
Grails: создайте файл .war, разверните его на tomcat, промойте и повторите для повторного развертывания.
Языки программирования:
Groovy ПОЛНОСТЬЮ потрясающе. Мне это нравится, более того, чем Python. Но у меня нет никаких претензий.
Плагины:
Grails: много сломанных плагинов (и может использовать каждый java lib когда-либо).
Django: несколько стабильных плагинов, но достаточно, чтобы сделать большую часть того, что вам нужно.
База данных:
Django: миграция схем с использованием Юга и, как правило, интуитивные отношения.
Grails: нет миграции схем и по умолчанию удаляет базу данных при запуске... WTF
Применение:
Django: стартапы (особенно в пространстве Gov 2.0), независимые веб-магазины.
Grails: предприятие
Надеюсь, что это поможет!
Ответ 2
Однако он написан на Python, который означает небольшую реальную поддержку в способ развертывания/упаковки, отладки, профилировщики и другие инструменты которые создают и поддерживают приложений намного проще.
У Python есть:
Итак, ИМХО, вы не должны беспокоиться об этом, использовать Python и Django и жить счастливо: -)
К счастью для вас, самая новая версия Django запускается на Jython, поэтому вам не нужно оставлять всю экосистему Java.
Говоря о структурах, я оценил этот год:
Ни одна из этих фреймворков не приближается к силе Django или Ruby on Rails. Основываясь на моем коллеге, я мог бы рекомендовать вам kohana. Недостатком является то, что он написан на PHP и, насколько я знаю, PHP не имеет превосходных инструментов для отладки, профилирования и упаковки приложений.
Изменить: Вот очень хорошая статья о упаковке и развертывании приложений Python (в частности, приложения Django). Это горячая тема в сообществе Django.
Ответ 3
Grails.
Grails выглядит просто как Rails (Ruby), но использует groovy, который проще, чем java. Он использует технологию java, и вы можете без проблем использовать любую java-библиотеку.
Я также выбираю Grails по простоте, и есть много java lib (например, отчет о jasper, jawr и т.д.), и я рад, что теперь они присоединяются к SpringSource, что делает их базовыми.
Ответ 4
Утверждение, что grails удаляет базу данных при запуске, совершенно неверно. Это поведение при запуске полностью настраивается и легко настраивается. Обычно я использую create-drop при запуске приложения в режиме dev. Я использую обновление, когда я запускаю тестирование и производство.
Мне также нравится обработка бутстрапа, которая позволяет мне предварительно настроить тестовые пользователи, данные и т.д. в среде Grails.
Мне бы хотелось увидеть кого-то, кто действительно построил и развернул некоторые коммерческие проекты, комментируя плюсы и минусы. Будьте действительно интересны.
Ответ 5
У меня есть два друга, которые изначально начали писать приложение с использованием Ruby on Rails, но столкнулись с рядом проблем и ограничений. Примерно через 8 недель работы над ним они решили исследовать другие альтернативы.
Они установили Catalyst Framework и Perl. Это было около 4 месяцев назад, и они неоднократно говорили о том, насколько лучше работает приложение, и насколько они более гибки.
С Perl у вас есть все доступные CPAN, а также большое количество инструментов. Я бы предложил взглянуть на него, по крайней мере.
Ответ 6
Проблема "хорошего развертывания" - для Python - не имеет глубокого значения, которое она имеет для Java.
Развертывание Python для Django в основном "перемещает файлы". Если вы хотите, вы можете выполнить прямо из каталога соединительной линии subversion.
Вы можете, не нарушая пота, использовать Python distutils и создать себе дистрибутив, который помещает ваши приложения Django в Python сайт-пакеты. Я не большой поклонник этого, но это очень легко сделать.
Так как мои вещи работают в Linux, у меня есть простые сценарии "install.py", которые перемещают материал из каталогов Subversion в директории /opt/this
и /opt/that
. Я использую явные настройки пути в моей конфигурации Apache, чтобы назвать те каталоги, в которых живут приложения.
Патч может быть выполнен путем редактирования файлов на месте. (Плохая политика.) Я предпочитаю редактировать в местоположении SVN и повторять мою небольшую установку, чтобы убедиться, что у меня есть все файлы под контролем.
Ответ 7
cakephp.org
Cakephp действительно хорош, очень близко к рубину на рельсах (1.2). Он находится в php, отлично работает на общих хостах и легко реализуется.
Единственным недостатком является то, что документация несколько не хватает, но вы быстро ее получите и быстро начнете делать классные вещи.
Я полностью рекомендую cakephp.
Ответ 8
Лично я сделал несколько довольно больших проектов с Django, но я могу сравнить только с упомянутыми "montrosities" (Spring, EJB) и действительно низкоуровневыми вещами, такими как Twisted.
Веб-структуры, использующие интерпретируемые языки, в основном находятся в зачаточном состоянии, и все они (активно поддерживаемые, то есть) улучшаются с каждым днем.
Ответ 9
Под "хорошим развертыванием" вы сравниваете его с файлами Java EAR, которые позволяют развертывать веб-приложения, загружая один файл на сервер J2EE? (И, в меньшей степени, файлы WAR, файлы EAR могут иметь файлы WAR для зависимых проектов)
Я не думаю, что Django или Rails добрались до этого момента, но я мог ошибаться... zuber указал на статью с более подробной информацией о стороне Python.
Capistrano может помочь на стороне Ruby.
К сожалению, я не очень много работал с Python или Ruby, поэтому я не могу помочь профайлерам или отладчикам.