Django -vs- Grails -vs-?
我想知道是否存在类似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中预配置测试用户,数据等。
我很乐意看到有人确实构建和部署了一些商业项目,并就其优缺点发表了评论。成为一个非常有趣的阅读。