7

У меня вопрос о разработке интерактивных динамических веб-сайтов. Может кто-то объяснить кратко различия между:В чем разница между Django, Ruby on Rails, Google App Engine и т. Д.?

  • Джанго
  • Ruby On Rails
  • Google App Engine
  • CGI скрипты/программы и приложения
  • все остальное является или кажется, подобные (PHP ?, Java-приложений? , TurboGears ?, и т. Д.)

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

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

ответ

17

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

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

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

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

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

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

+2

+1. Добавлю только, что если вы не знакомы ни с одним из языков, Python или Ruby (мне нравится Python) более выразительны и менее многословны, чем java. Django (с Python) и Ruby (с Rails) также являются менее сложными структурами, чем некоторые эквиваленты в Java. – cethegeek

+0

Отличное дополнение; спасибо, celopes. – duffymo

+0

+1 для «многоклиентских веб-приложений CRUD» –

3

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

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

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

0

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

Я woud считаю, не в порядке:

  • рубин: Rails для рубина
  • питон: Джанго
  • C#: asp.net MVC
  • PHP: Symfony2

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

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

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

Смежные вопросы