Django -vs- Grails -vs-?

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

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

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

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
22
0
19 565
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

cakephp.org

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

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

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

Я слышал, что Symfony намного лучше подходит для больших проектов! symfony-project.org У вас есть опыт работы с этим?

Martin K. 22.05.2009 02:12

Я посмотрел на symfony, но меня это не зацепило, я все еще использую Cakephp и сомневаюсь, что изменю это, если не перейду на Ruby on Rails.

Trausti Thor 09.06.2009 18:56

Symfony 2 намного лучше, чем предыдущая версия, вам стоит попробовать symfony.com

svlada 28.04.2012 10:53

However it's written in Python which means there's little real support in the way of deployment/packaging, debugging, profilers and other tools that make building and maintaining applications much easier.

Python имеет:

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

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

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

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

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

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

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

Ссылка на статью об упаковке и развертывании больше не работает (на странице указано 404), кто-нибудь знает, куда она делась?

Epcylon 14.02.2010 21:38

Хотя я согласен с тем, что Python / Django на голову лучше, чем любой другой PHP-фреймворк, простой факт заключается в том, что PHP имеет гораздо большее распространение и признание. Если вы не планируете быть единственным разработчиком какого-то игрушечного проекта, PHP - единственный выход. Профессиональное самоубийство - полагаться на Django, у которого мало вакансий, если таковые вообще имеются, и еще меньше нанимаемых разработчиков. Если вы мне не верите, посмотрите любой список вакансий. Разница в возможностях - на несколько порядков.

Cerin 27.05.2010 18:16

@Chris S - Я довольно успешный разработчик, работающий исключительно с Django. Могу вас заверить, что зависимость от Django - это НЕ профессиональное самоубийство.

zuber 14.06.2010 14:37

Конечно, есть ниши, где это могло бы сработать. Кажется, есть много возможностей, если вы живете в пригороде Калифорнии или Нью-Йорка или работаете в качестве фрилансера. Всем остальным повезло меньше.

Cerin 14.06.2010 17:03

Не согласен Symfony2 - это, по сути, порт с точки зрения архитектуры и принципов для Spring MVC. Так что в этом смысле он очень близок к Grails. Если вы ищете надежный PHP-фреймворк, забудьте о Kohana, Symfony2 - это то, что вам нужно.

Feras 27.03.2013 21:03

Вы когда-нибудь видели Groovy Console (groovy.codehaus.org/Groovy+Console) или версию Grails (grails.org/doc/2.0.3/ref/Command%20Line/console.html), которая позволяет использовать фреймворк для отладки. Это похоже на REPL

JGFMK 14.08.2014 22:49

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

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

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

Как часто Catalyst используется в промышленности?

svlada 16.03.2012 16:20

Я бы сказал, что это очень сильно зависит от того, какую отрасль вы ищете. Большинство крупных компаний по-прежнему в значительной степени ориентированы на Java для работы в Интернете. В небольших компаниях и в мире стартапов вы найдете гораздо больше Perl, Python и Ruby в целом. Могу сказать, что несколько недель назад я видел объявление о вакансии в Catalyst в моем локальном списке рассылки Linux User Group, но в последнее время я не пристально следил за такими вещами.

Christopher Cashell 21.03.2012 01:23

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

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

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

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

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

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

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

Развертывание Python для Django в основном заключается в «перемещении файлов». Вы можете бежать прямо из каталога ствола Subversion, если хотите.

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

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

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

Грааль.

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

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

Это одна из самых мощных вещей в среде JEE, которую я знаю! Я знаю много бизнес-приложений, которые действительно работают на Grails. Итак, ++ для Grails.

Martin K. 22.05.2009 02:10

Groovy не «проще», чем Java. Такое утверждение означает, что вы просто недостаточно углубились в язык, чтобы полностью реализовать его потенциал и сложность.

Daniel Honig 19.06.2009 23:09

Grails аккуратный, но, к сожалению, документация часто либо отсутствует, либо просто неверна. К тому же сообщения об ошибках, которые появляются, когда что-то идет не так, бесполезны. Однако у него есть хороший потенциал, когда он созреет и получит более широкое сообщество.

TM. 04.01.2010 08:40
Ответ принят как подходящий

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

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

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

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

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

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

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

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

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

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

Просто чтобы добавить немного обновлений к моему сообщению: для плагинов в Django начните с Pinax. Это единственный реальный репозиторий интегрированных плагинов. В grails есть команда, позволяющая просто перечислить все плагины и установить то, что вы хотите.

hendrixski 11.01.2010 21:05

Плагин миграции Grails db, grails-plugins.github.com/grails-database-migration/docs/man ual /…

James McMahon 03.04.2013 07:21

ИМХО, количество ошибок, которые присутствуют в ядре Grails и Django, также следует сравнивать, особенно когда в grails их очень много. Очень простые вещи, такие как многократное выполнение модульных тестов из одной и той же среды grails, не работают, и для их загрузки и запуска требуется вечность. Кроме того, обучение с помощью grails - это намного больше, чем django, если вы не создаете что-то тривиальное. С такими монстрами, как Spring и Hibernate, изучение грааля становится очень сложным для тех, кто раньше не работал с этими монстрами.

Divick 15.08.2013 12:35

Кроме того, соглашений в Grails иногда бывает слишком много ... что затрудняет отслеживание того, что происходит, глядя на чужой код.

Divick 15.08.2013 12:35

Прошло почти 4 года с тех пор, как этот вопрос был впервые задан и дан ответ. Обладает ли один из них значительным преимуществом над другим?

lifebalance 24.09.2014 14:57

В части базы данных вы можете изменить конфигурацию для обновления в файле yml, тогда он не будет удалять таблицы базы данных.

Pujan 15.12.2015 05:18

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

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

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

Другие вопросы по теме