Каковы основные различия между популярными веб-фреймворками?

StackOverflow https://stackoverflow.com/questions/142470

Вопрос

Есть такие множество фреймворков веб-приложений доступно в наши дни практически для всех существующих языков.Исходя из вашего опыта, каковы их сильные и слабые стороны и уникальные особенности?Предполагая роскошь выбора, какие факторы заставили бы вас предпочесть один другому?

Меня больше всего интересует непосредственный опыт работы людей с одним или несколькими фреймворками, а не исчерпывающее сравнение всего существующего.Надеюсь, в сообществе SO есть программисты, у которых есть хороший и плохой опыт работы с такими вещами, как Рельсы, ASP.NET, Джанго, Турбонаддувы, или JSF.Также было бы здорово услышать, использует ли кто-нибудь один из менее распространенных фреймворков, таких как Приморский край или Вебблоки.

Язык программирования - очевидная разница, но Java vs Ruby flamewar не доставит особого удовольствия, и большинство этих фреймворков, похоже, требуют таких же инвестиций в технологии, инструменты и сложность, как и выбранный ими язык;поэтому меня больше интересуют такие вещи, как:

  • Скорость разработки и удобство
  • Барьеры для входа - как с точки зрения обучения разработчиков, так и с точки зрения необходимой инфраструктуры
  • Блокировка - какой объем кода вы могли бы сохранить, если бы вам пришлось переключать фреймворки?
  • Гибкость - диктует ли фреймворк вашу архитектуру или дизайн?(Будет ли это хорошо или плохо, вероятно, лучше оставить для отдельного обсуждения.)
  • Производительность, масштабируемость и стабильность - очевидно, зависят от разработчиков!
Это было полезно?

Решение

Я собираюсь кратко остановиться на каждой области для трех популярных фреймворков Python.Это основано только на моем личном опыте и наблюдениях.

Скорость разработки и удобство

Для Турбонаддувы, Пилоны, и Джанго, скорость разработки примерно одинакова.Будучи современными фреймворками, легко начать работу на новом сайте и начать объединять страницы.Python, как известно, быстр в разработке и отладке, и я бы оценил любой фреймворк Python как имеющий меньшее время разработки, чем любая другая установка, с которой я работал (включая PHP, Perl, Embedded Perl и C # / ASP.Net).

Барьеры для входа - обучение разработчиков и инфраструктура

Если вы знаете Python и готовы посмотреть 20-минутный видеоурок, Таким образом, вы можете создать довольно полный сайт типа wiki с нуля.Или вы можете пройти через руководство по созданию сайтов социальных закладок через 30 минут (включая установку).Это примеры TurboGears, но два других фреймворка также содержат почти идентичные руководства.

Инфраструктуры тестирования / разработки, которая поставляется "из коробки" с этими фреймворками, как правило, достаточно для завершения работы большинства сайтов.В любой момент вы можете заменить компоненты в соответствии с требованиями вашей производственной среды.Например, SQLite отлично подходит для настройки ваших моделей и загрузки тестовых данных, но вам захочется установить MySQL (например) перед запуском в эксплуатацию или хранением больших объемов данных.

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

Блокировка в

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

Гибкость

Все дело в MVC с этими тремя фреймворками.Как вы сказали, это совсем другая дискуссия!

Производительность, масштабируемость и стабильность

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

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

Джанго против Распорок.

Скорость разработки и удобство.

Django - запущен за время, необходимое для построения модели (на Python), определения административных сопоставлений (2-3 строки кода на класс модели) и создания HTML-шаблонов для работы с основными представлениями по умолчанию.

Struts - необходимо определить базу данных в SQL, затем определить сопоставления ORM в iBatis.Затем определите, протестируйте и соберите различные компоненты приложения, используя классы действий и страницы шаблонов JSP.О, и мне нужно определить EJB для перемещения данных из приложения в JSP.Все это должно быть скомпилировано, и я должен проработать множество деталей, чтобы получить что-то, что соответствует правилам компиляции.

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

Постоянен во всех фреймворках и языках.Это в значительной степени пункт "мне все равно".Ни один язык или фреймворк по своей сути не прост в обучении.Все веб-фреймворки имеют схожие требования к инфраструктуре.

Блокировка в - какой объем кода вы могли бы сохранить, если бы вам пришлось переключать фреймворки?

В этом нет особого смысла.Если вы переключитесь с Tomcat на любой из производных Tomcat, вы сможете сохранить большую часть Java-кода.В противном случае вы, как правило, не сохраняете много кода при переключении фреймворка.

Гибкость - структура диктует вашу архитектуру или дизайн?(Будет ли это хорошо или плохо, вероятно, лучше оставить для отдельного обсуждения.)

На самом деле, это не отдельная дискуссия.В этом-то все и дело.Фреймворки диктуют вашу архитектуру - и это хорошо.Действительно, фреймворк - это код, который вам не нужно писать, тестировать, отлаживать или поддерживать.Хорошо, что фреймворк ограничивает ваше приложение проверенной, работоспособной структурой.

Производительность, масштабируемость и стабильность - очевидно, это зависит от разработчиков!

Производительность - это язык (а не фреймворк).Это дизайн.В какой-то степени это также конфигурация реализации.

Масштабируемость - это фреймворк (а не язык).Это дизайн и конфигурация.

Стабильность распространяется по всем направлениям:Операционная система, язык, фреймворк, дизайн, программирование, контроль качества и конфигурация реализации.

Это невероятно субъективный вопрос..и это тег, который вы должны добавить к своему вопросу.Как уже говорилось в нескольких комментариях, вы уже указали довольно хорошее руководство;о чем ты на самом деле спрашиваешь?Существует миллиард мнений по этому поводу, и определенно нет правильного ответа!

Лично я начал использовать .html, перешел на php, попробовал ruby (возненавидел его), открыл для себя Python / DJango..и с тех пор я счастлива.Хотя это очень уникальный путь (вероятно), поэтому ваш пробег может отличаться :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top