Django -vs- Grails -vs-?

时间:2020-03-05 18:56:53  来源:igfitidea点击:

我想知道是否存在类似Django的Web应用程序开发简便性与良好的部署,调试和其他工具的结合?

Django是一个非常有用的框架,用于构建内容繁多的网站。与那里的一些Java怪兽相比,我尝试过的最好的东西和新鲜空气。但是,它是用Python编写的,这意味着在部署/打包,调试,分析器和其他工具方面几乎没有真正的支持,这些工具使构建和维护应用程序变得更加容易。

Ruby也有类似的问题,尽管我对Ruby的喜欢程度远胜于Python,但我得到的印象是,在管理/支持应用程序时,Rails在Django中大致处于同一条船。

这里有没有人尝试过针对非平凡项目的Django和Grails(或者其他Web框架)?他们如何比较?

解决方案

回答

cakephp.org

Cakephp非常好,真的接近于ruby(1.2)。它在php中,可在共享主机上很好地工作,并且易于实现。

唯一的缺点是缺少该文档,但是我们很快就会掌握它并开始做一些很酷的事情。

我完全推荐cakephp。

回答

However it's written in Python which
  means there's little real support in
  the way of deployment/packaging,
  debugging, profilers and other tools
  that make building and maintaining
  applications much easier.

Python具有:

  • 一个很棒的交互式调试器,它很好地利用了Python REPL。
  • easy_install anv virtualenv用于依赖性管理,打包和部署。
  • 与其他语言相当的分析功能

所以恕我直言,我们不必担心这些事情,使用Python和Django并过上幸福的生活:-)

幸运的是,最新版本的Django在Jython上运行,因此我们无需将整个Java生态系统抛在后面。

说到框架,我今年进行了评估:

  • 挂架(Python)
  • webpy(Python)
  • Symfony(PHP)
  • CakePHP(PHP)

这些框架都无法与Django或者Ruby on Rails媲美。根据我的同事意见,我可以向我们推荐kohana框架。缺点是,它是用PHP编写的,据我所知,PHP没有用于调试,分析和打包应用程序的一流工具。

编辑:这是一篇有关打包和部署Python应用程序(特别是Django应用程序)的非常好的文章。现在,这是Django社区中的热门话题。

回答

我有两个朋友,他们最初开始使用Ruby on Rails编写应用程序,但遇到了许多问题和局限性。经过大约8周的研究,他们决定研究其他替代方案。

他们选择了Catalyst Framework和Perl。那是大约4个月前的事,他们反复谈论应用程序的运行状况如何,以及它们具有多少灵活性。

使用Perl,我们可以使用所有CPAN以及随附的大量工具。我建议至少看看它。

回答

我个人使用Django进行了一些相当大的项目,但是我只能与所说的" montrosities"(Spring,EJB)和诸如Twisted之类的低级东西进行比较。

使用解释语言的Web框架大多还处于起步阶段,并且它们(积极维护)每天都在不断完善。

回答

通过"良好的部署",我们是否将其与Java的EAR文件进行了比较,从而可以通过将单个文件上传到J2EE服务器来部署Web应用程序? (在较小程度上,WAR文件; EAR文件可以具有用于相关项目的WAR文件)

我认为Django或者Rails尚未达到这一点,但我可能是错的... zuber指出了一篇在Python方面有更多详细信息的文章。

Capistrano可能在Ruby方面有所帮助。

不幸的是,我并没有真正使用Python或者Ruby,因此我对分析器或者调试器没有帮助。

回答

对于Python来说,"良好的部署"问题没有对Java的深刻意义。

Django的Python部署基本上是"移动文件"。如果需要,我们可以直接在Subversion中继目录之外运行。

我们可以不费吹灰之力地使用Python distutils,并为自己构建一个分发工具包,将Django应用程序放入Python的站点包中。我不是很喜欢它,但是确实很容易做到。

因为我的东西在Linux上运行,所以我有简单的" install.py"脚本,可以将东西从Subversion目录移到" / opt / this"和" / opt / that"目录中。我在Apache配置中使用显式路径设置来命名应用程序所在的目录。

可以通过在适当位置编辑文件来进行修补。 (不正确的政策。)我更喜欢在SVN位置中进行编辑,然后重新运行我的小安装程序,以确保我实际上控制了所有文件。

回答

糟透了。

Grails看起来就像Rails(Ruby),但是它使用了比Java更简单的groovy。它使用Java技术,我们可以使用任何Java库而不会遇到任何麻烦。

我还选择Grails而不是简单性,并且有很多Java库(例如jasper report,jabarr等),我很高兴现在它们与SpringSource结合使用,这使它们的基础变得牢固。

回答

我们要求使用Grails和Django的人。我已经为大型项目完成了这两项工作。这是我的想法:

IDE的:
Django在Eclipse中运行非常好,Grails在IntelliJ Idea中运行非常好。

调试:
几乎相同(假设我们将IntelliJ用于Grails,将Eclipse用于Python)。逐步调试,检查变量等...都不需要打印语句。有时django错误消息可能没有用,但是Grails错误消息通常很长,很难解析。

运行单元测试的时间:
django:2秒。
Grails:20秒(测试本身都在不到一秒钟的时间内运行,这是有关加载框架以运行它们的部分,剩下的工作……我们可以看到,Grails的加载速度实在令人沮丧地缓慢)。

部署:
Django:将一个文件复制并粘贴到apache配置中,然后重新部署,只需更改代码并重新加载apache。
Grails:创建一个.war文件,将其部署在tomcat上,冲洗并重复以重新部署。

编程语言:
Groovy真的很棒。我喜欢它,远胜于Python。但是我当然没有怨言。

外挂程式:
Grails:很多坏掉的插件(并且可以使用每个Java库)。
Django:一些稳定的插件,但足以满足大部分需求。

数据库:
Django:使用南方的模式迁移,通常是直观的关系。
Grails:无模式迁移,默认情况下,它将在启动时删除数据库... WTF

用法:
Django:创业公司(尤其是在Gov 2.0领域),独立的Web开发商店。
Grails:企业

希望对我们有所帮助!

回答

grails在启动时删除数据库的语句是完全错误的。它在启动时的行为是完全可配置的,并且易于配置。在开发模式下运行应用程序时,通常会使用create-drop。在测试和生产中运行时,我使用update。

我也喜欢引导程序处理,该引导程序处理使我可以按环境在Grails中预配置测试用户,数据等。

我很乐意看到有人确实构建和部署了一些商业项目,并就其优缺点发表了评论。成为一个非常有趣的阅读。