Django -vs-Grails -vs-?

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

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

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

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

9 Solutions collect form web for “Django -vs-Grails -vs-?”

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

IDE: Django отлично работает в Eclipse, Grails отлично работает в IntelliJ Idea.

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

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

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

Языки программирования: Groovy TOTALLY awesome. Мне это нравится, более того, чем Python. Но у меня нет никаких претензий.

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

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

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

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

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

У Python есть:

  1. отличный интерактивный отладчик , который очень хорошо использует 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 рамки. Недостатком является то, что он написан на PHP и, насколько я знаю, PHP не имеет превосходных инструментов для отладки, профилирования и упаковки приложений.

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

Grails.

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

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

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

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

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

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

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

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

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

Развертывание Python для Django в основном «перемещает файлы». Если вы хотите, вы можете выполнить прямо из каталога сундуков subversion.

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

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

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

cakephp.org

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

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

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

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

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

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

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

Капистрано может помочь на стороне Руби.

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

  • Генераторы админов веб-приложений
  • CMS или Framework?
  • Динамическое изменение полей сериализатора в Django Rest Framework
  • Какая хорошая легкая инфраструктура MVC Python?
  • Плюсы и минусы различных подходов к веб-программированию на Python
  • Несколько приложений с django
  • Предложения Framework / CMS для корпоративного сайта и интрасети (я должен убедить президента в его целостности!)
  • удобная для пользователя веб-страница?
  • Python - лучший язык программирования в мире.