В чем разница между Django, Ruby on Rails, Google App Engine и т. Д.? - PullRequest
7 голосов
/ 16 января 2010

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

  • Джанго
  • Ruby on Rails
  • Google App Engine
  • CGI-скрипты / приложения
  • что-либо похожее или похожее (PHP ?, Java-сервлеты ?, TurboGears? И т. Д.)

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

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

Ответы [ 3 ]

17 голосов
/ 16 января 2010

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

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

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

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

3 голосов
/ 16 января 2010

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

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

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

0 голосов
/ 06 мая 2013

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

Думаю, не в порядке:

  • ruby: Рельсы для ruby ​​
  • питон: Джанго
  • C #: asp.net MVC
  • php: symfony2

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

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

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

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