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






cakephp.org
Cakephp действительно хорош, очень близок к Ruby on Rails (1.2). Он написан на php, очень хорошо работает на общих хостах и прост в реализации.
Единственным недостатком является то, что документации немного не хватает, но вы быстро ее получаете и быстро начинаете делать крутые вещи.
Я полностью рекомендую cakephp.
Я посмотрел на symfony, но меня это не зацепило, я все еще использую Cakephp и сомневаюсь, что изменю это, если не перейду на Ruby on Rails.
Symfony 2 намного лучше, чем предыдущая версия, вам стоит попробовать symfony.com
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 имеет:
Так что, IMHO, вам не стоит об этом беспокоиться, используйте Python и Django и живите счастливо :-)
К счастью для вас, новейшая версия Django работает на Jython, так что вам не нужно отказываться от всей экосистемы Java.
Говоря о фреймворках, в этом году я оценил:
Ни один из этих фреймворков не сравнится с мощью Django или Ruby on Rails. Основываясь на мнении коллег, я могу порекомендовать вам фреймворк кохана. Обратной стороной является то, что он написан на PHP, и, насколько я знаю, в PHP нет превосходных инструментов для отладки, профилирования и упаковки приложений.
Редактировать: Вот очень хороший статья об упаковке и развертывании приложений Python (в частности, приложения Django). Сейчас это горячая тема в сообществе Django.
Ссылка на статью об упаковке и развертывании больше не работает (на странице указано 404), кто-нибудь знает, куда она делась?
Хотя я согласен с тем, что Python / Django на голову лучше, чем любой другой PHP-фреймворк, простой факт заключается в том, что PHP имеет гораздо большее распространение и признание. Если вы не планируете быть единственным разработчиком какого-то игрушечного проекта, PHP - единственный выход. Профессиональное самоубийство - полагаться на Django, у которого мало вакансий, если таковые вообще имеются, и еще меньше нанимаемых разработчиков. Если вы мне не верите, посмотрите любой список вакансий. Разница в возможностях - на несколько порядков.
@Chris S - Я довольно успешный разработчик, работающий исключительно с Django. Могу вас заверить, что зависимость от Django - это НЕ профессиональное самоубийство.
Конечно, есть ниши, где это могло бы сработать. Кажется, есть много возможностей, если вы живете в пригороде Калифорнии или Нью-Йорка или работаете в качестве фрилансера. Всем остальным повезло меньше.
Не согласен Symfony2 - это, по сути, порт с точки зрения архитектуры и принципов для Spring MVC. Так что в этом смысле он очень близок к Grails. Если вы ищете надежный PHP-фреймворк, забудьте о Kohana, Symfony2 - это то, что вам нужно.
Вы когда-нибудь видели Groovy Console (groovy.codehaus.org/Groovy+Console) или версию Grails (grails.org/doc/2.0.3/ref/Command%20Line/console.html), которая позволяет использовать фреймворк для отладки. Это похоже на REPL
У меня есть двое друзей, которые изначально начали писать приложение с использованием Ruby on Rails, но столкнулись с рядом проблем и ограничений. Примерно через 8 недель работы над этим они решили изучить другие альтернативы.
Они остановились на Catalyst Framework и Perl. Это было около 4 месяцев назад, и они неоднократно говорили о том, насколько лучше работает приложение и насколько больше у них гибкости.
С Perl вам доступен весь CPAN, а также большое количество включенных инструментов. Я бы посоветовал хотя бы взглянуть на нее.
Как часто Catalyst используется в промышленности?
Я бы сказал, что это очень сильно зависит от того, какую отрасль вы ищете. Большинство крупных компаний по-прежнему в значительной степени ориентированы на Java для работы в Интернете. В небольших компаниях и в мире стартапов вы найдете гораздо больше Perl, Python и Ruby в целом. Могу сказать, что несколько недель назад я видел объявление о вакансии в Catalyst в моем локальном списке рассылки Linux User Group, но в последнее время я не пристально следил за такими вещами.
Лично я сделал несколько довольно больших проектов с 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.
Groovy не «проще», чем Java. Такое утверждение означает, что вы просто недостаточно углубились в язык, чтобы полностью реализовать его потенциал и сложность.
Grails аккуратный, но, к сожалению, документация часто либо отсутствует, либо просто неверна. К тому же сообщения об ошибках, которые появляются, когда что-то идет не так, бесполезны. Однако у него есть хороший потенциал, когда он созреет и получит более широкое сообщество.
Вы просили кого-то, кто использовал и 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 есть команда, позволяющая просто перечислить все плагины и установить то, что вы хотите.
Плагин миграции Grails db, grails-plugins.github.com/grails-database-migration/docs/man ual /…
ИМХО, количество ошибок, которые присутствуют в ядре Grails и Django, также следует сравнивать, особенно когда в grails их очень много. Очень простые вещи, такие как многократное выполнение модульных тестов из одной и той же среды grails, не работают, и для их загрузки и запуска требуется вечность. Кроме того, обучение с помощью grails - это намного больше, чем django, если вы не создаете что-то тривиальное. С такими монстрами, как Spring и Hibernate, изучение грааля становится очень сложным для тех, кто раньше не работал с этими монстрами.
Кроме того, соглашений в Grails иногда бывает слишком много ... что затрудняет отслеживание того, что происходит, глядя на чужой код.
Прошло почти 4 года с тех пор, как этот вопрос был впервые задан и дан ответ. Обладает ли один из них значительным преимуществом над другим?
В части базы данных вы можете изменить конфигурацию для обновления в файле yml, тогда он не будет удалять таблицы базы данных.
Утверждение, что grails удаляет базу данных при запуске совершенно неверно. Его поведение при запуске полностью настраивается и легко настраивается. Обычно я использую create-drop при запуске приложения в режиме разработки. Я использую обновление при тестировании и производстве.
Мне также нравится обработка начальной загрузки, которая позволяет мне предварительно настраивать тестовых пользователей, данные и т. д. Для среды в Grails.
Мне бы очень хотелось, чтобы кто-то, кто действительно построил и развернул несколько коммерческих проектов, прокомментировал плюсы и минусы. Будьте действительно интересным чтивом.
Я слышал, что Symfony намного лучше подходит для больших проектов! symfony-project.org У вас есть опыт работы с этим?