Django,Ruby on Rails,Google App Engine等有什么区别?

时间:2023-01-24 00:21:29

I have a newbie question about developing interactive, dynamic web sites. Can someone explain concisely the differences between:

我有一个关于开发交互式动态网站的新手问题。有人可以简明扼要地解释:

  • Django
  • Django的
  • Ruby on Rails
  • Ruby on Rails
  • Google App Engine
  • Google App Engine
  • CGI scripts/apps
  • CGI脚本/应用程序
  • whatever else is or seems similar (PHP?, Java Servlets?, TurboGears?, etc.)
  • 其他什么是或似乎相似(PHP?,Java Servlets?,TurboGears?等)

When would I prefer, say, the Google App Engine over Django, etc.? If I wanted to open a book store like Amazon, what would I choose to make the website? If I wanted to reimplement SO? What about a news site like nytimes?

比起Django等,我更喜欢Google App Engine?如果我想开设像亚马逊这样的书店,我会选择如何制作网站?如果我想重新实现SO?那个新闻网站怎么样?

Sorry I am throwing all these different technologies and frameworks together, but for me the uninitiated they all pretty much seem to be doing the same thing ...

对不起,我把所有这些不同的技术和框架放在一起,但对于我来说,他们几乎似乎在做同样的事情......

3 个解决方案

#1


17  

Here's my attempt at your (very broad) question:

这是我对你(非常广泛)问题的尝试:

  1. Django - a Python framework to make developing multi-client web-based CRUD apps easier.
  2. Django - 一个Python框架,可以更轻松地开发基于Web的多客户端CRUD应用程序。
  3. Ruby on Rails - a Ruby framework to make developing multi-client web-based CRUD apps easier.
  4. Ruby on Rails - 一个Ruby框架,可以更轻松地开发基于Web的多客户端CRUD应用程序。
  5. Google App Engine - Google hosting of Python or Java applications that uses BigTable as its storage mechanism.
  6. Google App Engine - Google托管使用BigTable作为其存储机制的Python或Java应用程序。
  7. CGI scripts/apps - old school web apps where a CGI script was kicked off for each request to a web server.
  8. CGI脚本/应用程序 - 旧学校Web应用程序,其中CGI脚本针对Web服务器的每个请求启动。

Grails is a Ruby-like framework to make developing multi-client web-based CRUD apps easier. It's based on Java, Groovy, Spring, and Hibernate.

Grails是一个类似Ruby的框架,可以更轻松地开发基于Web的多客户端CRUD应用程序。它基于Java,Groovy,Spring和Hibernate。

Java servlets are HTTP listener classes that you deploy using Java EE servlet/JSP engines. Those engines almost invariably have HTTP servers built into them, so you can choose whether or not to deploy them on top of a web server like Apache or IIS. They'd be part of a framework like Grails, but you need to add a lot of other stuff besides servlets to create a dynamic, data-driven web app. That's why you can't swing a cat without hitting another Java web framework (e.g., Struts, Spring, Wicket, JSF, etc.) - there's a lot more to it than just servlets.

Java servlet是使用Java EE servlet / JSP引擎部署的HTTP侦听器类。这些引擎几乎总是内置HTTP服务器,因此您可以选择是否在Apache或IIS等Web服务器上部署它们。他们是像Grails这样的框架的一部分,但除了servlet之外,还需要添加许多其他东西来创建动态的,数据驱动的Web应用程序。这就是为什么你不能在不打击另一个Java Web框架(例如,Struts,Spring,Wicket,JSF等)的情况下摆动猫的原因 - 除了servlet之外还有很多东西。

These are all similar in that they're different attempts to solve that same fundamental problem. You'd choose one based on your familiarity with the underlying language.

这些都是相似的,因为它们是解决同一基本问题的不同尝试。您可以根据自己对基础语言的熟悉程度选择一个。

I wouldn't put Google App Engine in the same category. It feels more like Google's "host in the cloud" option than an alternative to Rails or Django. You can deploy Python apps that use Django on Google App Engine, so it's not an alternative in that sense.

我不会将Google App Engine放在同一类别中。感觉更像谷歌的“云中主机”选项,而不是Rails或Django的替代品。您可以在Google App Engine上部署使用Django的Python应用程序,因此在这个意义上它不是替代品。

#2


3  

It's a matter of taste what you choose although you compare apple with oranges:

虽然你比较苹果和橘子,但你选择的是品味问题:

  • Django and TurboGears are frameworks for using python more easily on the web
  • Django和TurboGears是在Web上更容易使用python的框架
  • Ruby on Rails is also a framework but using a different language: Ruby
  • Ruby on Rails也是一个框架,但使用不同的语言:Ruby
  • PHP is a scripting language primary developed for the web
  • PHP是一种主要为Web开发的脚本语言
  • Java Servlets are used for creating websites with Java
  • Java Servlet用于使用Java创建网站
  • CGI is just a method for a webserver for calling a script on that platform
  • CGI只是一种用于在该平台上调用脚本的Web服务器的方法
  • Google App Enginge is differnt: It is a service provider at which you can host your webapp. Currently it supports Python (even with Django or TurboGears) and Java
  • Google App Enginge不同:它是一个服务提供商,您可以在其中托管您的网络应用程序。目前它支持Python(即使使用Django或TurboGears)和Java

Technically you can create any webapp with one of the technologies above, it would use one I'm familiar with. If you don't know any, just try to read some tutorials and Wikipedia articles on the ones above to choose your preferred and start using it - you'll get familiar with it very soon. Once you learned (and used) one of them thoroughly it won't be hard to use the other ones.

从技术上讲,您可以使用上述技术之一创建任何webapp,它将使用我熟悉的技术。如果你不知道,只要尝试阅读上面的一些教程和*文章,选择你喜欢的并开始使用它 - 你很快就会熟悉它。一旦你完全学会(并使用过)其中一个,就不会很难使用其他的。

#3


0  

Amazon, SO and Nytimes are all more or less CRUD apps. So you can implement it with any up-to-date web framework.

亚马逊,SO和Nytimes都是或多或少的CRUD应用程序。因此,您可以使用任何最新的Web框架实现它。

I woud consider, in no order:

我无意中考虑:

  • ruby: Rails for ruby
  • 红宝石:红宝石的路轨
  • python: Django
  • python:Django
  • C#: asp.net MVC
  • C#:asp.net MVC
  • php: symfony2
  • php:symfony2

If you want a faster learning curve (if you need to launch quickly, you may take a look at smaller frameworks):

如果您想要更快的学习曲线(如果您需要快速启动,您可以查看较小的框架):

One key factor is the language you already know. So try picking a framework where you are familiar with it's language.

一个关键因素是您已经知道的语言。因此,尝试选择一个熟悉其语言的框架。

One other key factor (that we think about less) is what language your peers know. If your project involves a team, or you will hand it to someone else in the future, pick something that your peers will be comfortable with.

另一个关键因素(我们考虑较少)是您的同行所知道的语言。如果您的项目涉及一个团队,或者您将来将其交给其他人,请选择您的同事会感到满意的内容。

#1


17  

Here's my attempt at your (very broad) question:

这是我对你(非常广泛)问题的尝试:

  1. Django - a Python framework to make developing multi-client web-based CRUD apps easier.
  2. Django - 一个Python框架,可以更轻松地开发基于Web的多客户端CRUD应用程序。
  3. Ruby on Rails - a Ruby framework to make developing multi-client web-based CRUD apps easier.
  4. Ruby on Rails - 一个Ruby框架,可以更轻松地开发基于Web的多客户端CRUD应用程序。
  5. Google App Engine - Google hosting of Python or Java applications that uses BigTable as its storage mechanism.
  6. Google App Engine - Google托管使用BigTable作为其存储机制的Python或Java应用程序。
  7. CGI scripts/apps - old school web apps where a CGI script was kicked off for each request to a web server.
  8. CGI脚本/应用程序 - 旧学校Web应用程序,其中CGI脚本针对Web服务器的每个请求启动。

Grails is a Ruby-like framework to make developing multi-client web-based CRUD apps easier. It's based on Java, Groovy, Spring, and Hibernate.

Grails是一个类似Ruby的框架,可以更轻松地开发基于Web的多客户端CRUD应用程序。它基于Java,Groovy,Spring和Hibernate。

Java servlets are HTTP listener classes that you deploy using Java EE servlet/JSP engines. Those engines almost invariably have HTTP servers built into them, so you can choose whether or not to deploy them on top of a web server like Apache or IIS. They'd be part of a framework like Grails, but you need to add a lot of other stuff besides servlets to create a dynamic, data-driven web app. That's why you can't swing a cat without hitting another Java web framework (e.g., Struts, Spring, Wicket, JSF, etc.) - there's a lot more to it than just servlets.

Java servlet是使用Java EE servlet / JSP引擎部署的HTTP侦听器类。这些引擎几乎总是内置HTTP服务器,因此您可以选择是否在Apache或IIS等Web服务器上部署它们。他们是像Grails这样的框架的一部分,但除了servlet之外,还需要添加许多其他东西来创建动态的,数据驱动的Web应用程序。这就是为什么你不能在不打击另一个Java Web框架(例如,Struts,Spring,Wicket,JSF等)的情况下摆动猫的原因 - 除了servlet之外还有很多东西。

These are all similar in that they're different attempts to solve that same fundamental problem. You'd choose one based on your familiarity with the underlying language.

这些都是相似的,因为它们是解决同一基本问题的不同尝试。您可以根据自己对基础语言的熟悉程度选择一个。

I wouldn't put Google App Engine in the same category. It feels more like Google's "host in the cloud" option than an alternative to Rails or Django. You can deploy Python apps that use Django on Google App Engine, so it's not an alternative in that sense.

我不会将Google App Engine放在同一类别中。感觉更像谷歌的“云中主机”选项,而不是Rails或Django的替代品。您可以在Google App Engine上部署使用Django的Python应用程序,因此在这个意义上它不是替代品。

#2


3  

It's a matter of taste what you choose although you compare apple with oranges:

虽然你比较苹果和橘子,但你选择的是品味问题:

  • Django and TurboGears are frameworks for using python more easily on the web
  • Django和TurboGears是在Web上更容易使用python的框架
  • Ruby on Rails is also a framework but using a different language: Ruby
  • Ruby on Rails也是一个框架,但使用不同的语言:Ruby
  • PHP is a scripting language primary developed for the web
  • PHP是一种主要为Web开发的脚本语言
  • Java Servlets are used for creating websites with Java
  • Java Servlet用于使用Java创建网站
  • CGI is just a method for a webserver for calling a script on that platform
  • CGI只是一种用于在该平台上调用脚本的Web服务器的方法
  • Google App Enginge is differnt: It is a service provider at which you can host your webapp. Currently it supports Python (even with Django or TurboGears) and Java
  • Google App Enginge不同:它是一个服务提供商,您可以在其中托管您的网络应用程序。目前它支持Python(即使使用Django或TurboGears)和Java

Technically you can create any webapp with one of the technologies above, it would use one I'm familiar with. If you don't know any, just try to read some tutorials and Wikipedia articles on the ones above to choose your preferred and start using it - you'll get familiar with it very soon. Once you learned (and used) one of them thoroughly it won't be hard to use the other ones.

从技术上讲,您可以使用上述技术之一创建任何webapp,它将使用我熟悉的技术。如果你不知道,只要尝试阅读上面的一些教程和*文章,选择你喜欢的并开始使用它 - 你很快就会熟悉它。一旦你完全学会(并使用过)其中一个,就不会很难使用其他的。

#3


0  

Amazon, SO and Nytimes are all more or less CRUD apps. So you can implement it with any up-to-date web framework.

亚马逊,SO和Nytimes都是或多或少的CRUD应用程序。因此,您可以使用任何最新的Web框架实现它。

I woud consider, in no order:

我无意中考虑:

  • ruby: Rails for ruby
  • 红宝石:红宝石的路轨
  • python: Django
  • python:Django
  • C#: asp.net MVC
  • C#:asp.net MVC
  • php: symfony2
  • php:symfony2

If you want a faster learning curve (if you need to launch quickly, you may take a look at smaller frameworks):

如果您想要更快的学习曲线(如果您需要快速启动,您可以查看较小的框架):

One key factor is the language you already know. So try picking a framework where you are familiar with it's language.

一个关键因素是您已经知道的语言。因此,尝试选择一个熟悉其语言的框架。

One other key factor (that we think about less) is what language your peers know. If your project involves a team, or you will hand it to someone else in the future, pick something that your peers will be comfortable with.

另一个关键因素(我们考虑较少)是您的同行所知道的语言。如果您的项目涉及一个团队,或者您将来将其交给其他人,请选择您的同事会感到满意的内容。