В чем разница между Django, Ruby on Rails, Google App Engine и т. Д.?

У меня есть вопрос для новичков о разработке интерактивных динамических веб-сайтов. Может ли кто-нибудь кратко объяснить различия между:

  • Джанго
  • Рубин на рельсах
  • Google App Engine
  • Скрипты / приложения CGI
  • что-то еще или кажется похожим (PHP ?, Java Servlets ?, TurboGears? и т. д.)

Когда я предпочту, скажем, Google App Engine Django и т. Д.? Если бы я хотел открыть книжный магазин, такой как Amazon, что бы я выбрал для создания веб-сайта? Если бы я хотел переопределить ТАК? А как насчет новостного сайта, такого как nytimes?

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


person Frank    schedule 16.01.2010    source источник


Ответы (3)


Вот моя попытка ответить на ваш (очень широкий) вопрос:

  1. Django - фреймворк Python, упрощающий разработку многоклиентских веб-приложений CRUD.
  2. Ruby on Rails - среда Ruby для упрощения разработки мультиклиентных веб-приложений CRUD.
  3. Google App Engine - хостинг Google приложений Python или Java, использующий BigTable в качестве механизма хранения.
  4. Сценарии / приложения CGI - старые школьные веб-приложения, в которых сценарий CGI запускался для каждого запроса к веб-серверу.

Grails - это Ruby-подобный фреймворк, упрощающий разработку мультиклиентных веб-приложений CRUD. Он основан на Java, Groovy, Spring и Hibernate.

Сервлеты Java - это классы прослушивателей HTTP, которые вы развертываете с помощью механизмов сервлетов / JSP Java EE. Эти механизмы почти всегда имеют встроенные HTTP-серверы, поэтому вы можете выбрать, развертывать ли их поверх веб-сервера, такого как Apache или IIS. Они будут частью фреймворка, такого как Grails, но вам нужно добавить много других вещей, помимо сервлетов, для создания динамического веб-приложения, управляемого данными. Вот почему вы не можете размахивать кошкой, не затронув другой веб-фреймворк Java (например, Struts, Spring, Wicket, JSF и т. Д.) - это гораздо больше, чем просто сервлеты.

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

Я бы не отнес Google App Engine к той же категории. Это больше похоже на вариант Google «хост в облаке», чем на альтернативу Rails или Django. Вы можете развертывать приложения Python, использующие Django, на Google App Engine, поэтому в этом смысле это не альтернатива.

person duffymo    schedule 16.01.2010
comment
+1. Добавлю только, что если вы не знакомы ни с одним из языков, Python или Ruby (мне нравится Python) более выразительны и менее подробны, чем java. Django (с Python) и Ruby (с Rails) также являются менее сложными фреймворками, чем некоторые эквиваленты в Java. - person cethegeek; 17.01.2010

Что вы выберете - дело вкуса, хотя вы сравниваете яблоко с апельсином:

  • Django и TurboGears - это фреймворки для более простого использования python в сети.
  • Ruby on Rails также является фреймворком, но использует другой язык: Ruby
  • PHP - это язык сценариев, изначально разработанный для Интернета.
  • Сервлеты Java используются для создания веб-сайтов на Java.
  • CGI - это просто метод для веб-сервера для вызова скрипта на этой платформе.
  • Google App Enginge отличается: это поставщик услуг, у которого вы можете разместить свое веб-приложение. В настоящее время он поддерживает Python (даже с Django или TurboGears) и Java.

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

person neo    schedule 16.01.2010

Amazon, SO и Nytimes - все более или менее CRUD-приложения. Таким образом, вы можете реализовать его с помощью любого современного веб-фреймворка.

Я буду рассматривать в произвольном порядке:

  • ruby: рельсы для рубина
  • питон: Django
  • C #: asp.net MVC
  • php: symfony2

Если вам нужна более быстрая кривая обучения (если вам нужно быстро запустить, вы можете взглянуть на более мелкие фреймворки):

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

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

person Benjamin Crouzier    schedule 06.05.2013