BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

2006 年度十大新闻:Rails vs. Django 大比拼

| 作者 Luciano Ramalho 关注 2 他的粉丝 ,译者 Jason lai 关注 0 他的粉丝 发布于 2006年11月28日. 估计阅读时间: 4 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

原文发布于 2006 年 11 月 16 日上午 11 时 35 分。

由于两位 Web 开发人员的努力,现在我们已经有一份对 Ruby on Rails 和 Python 的 Django 框架颇为客观公正的比较测评。Ben Askins 和 Alan Green 共同制定并各自并行开发了一个分享书评的简单 Web 应用。他们的报告以及源代码都已经发布到网上,供大家阅读及下载。从测评结果中,他们得到这样一个结论,两个框架没有哪个明显优于另外一个,因此最佳方案很可能还是坚持使用你所选择的语言写出的框架。但是,仍然存在一些关键指标,使得在二者之间做选择显得不是那么容易。

在这里我们无须介绍 Ruby on Rails ,但对于 Django 还是有必要着笔下墨做下介绍。Django 之所以能在 Python 世界中脱颖而出,主要有两个原因:一是Google 的大力支持,二是 Python 的掌舵人 Guido van Rossum 一反常态,在众多基本差不多的选择中对 Django 情有独钟。此外,Alan 和 Ben 也指出,“Django [……] 并不是 Ruby on Rails 的仿制品”。

在 两位作者实现的Web 应用中代码行的比较方面,Rails 以比 Python 少 4% 行数的成绩而胜出。尽管 Django 中的模板显得更加冗长,但是 Django 提供一个几近自由的管理接口,因而使得实际上他们写出来的 Python 代码比 Ruby 代码还要少。在开发时间方面,Rails 实现用了 25 小时 45 分,而 Django 仅用了 16 小时 36 分钟。当然,我们不能轻易断言到底 是Ben 还是 Alan 代码写得更快,但这还是对在 Rails 上编写管理表单时需要的不同起了一定说明作用,而 Django 则通过模型中的若干提示生成这些代码。作者推荐考察诸如 AutoAdmin 和 Streamlined 等 Rails 插件来进行相应的改进。

报告指出,通过使用 RJS 和集成的 JavaScript 库,Rails 使AJAX 开发变得更加容易,而 Django 包含了 JSON 功能,但将所有的 JavaScript 编码以及对客户端库的选择留给了开发人员。JavaScript 高手们可能会更喜欢 Django 的不干预政策,但除了这些人以外,其它所有人都能从 Rails 内建的 AJAX 支持中受益。

另一方面他们表示,Python 框架为国际化提供了更优秀的基础支持,因为 Python 平台提供与生俱来的 Unicode 支持及 gettext 消息替换功能,使得多语言网站可以针对不同的 HTTP 请求产生本地化响应。

Rails 的主要优势在于其迁移机制,可以使得对数据模型的变更尝试和改进变得容易,甚至对于生产环境的应用程序来说也是如此。Django 在此方面则尚无建树。倘若 Alan 和 Ben 忽略代码中迁移代码的行数,那么 Ruby 和 Python 的代码数量是大致相等的。在加入模板后,Rails 解决方案要比 Django 方案少出 15% 的代码行数,即便在提供了定制的管理页面时也是如此。在这里作者拿苹果和(不存在的)橘子做比较,表现出对 Django 的偏袒。

Green 和 Askin 二位先生颇为简洁地总结到:“尽管在二者之间做出选择可能是件困难的事情,但好消息是任意一个框架都是团队开发 Web 应用的优秀选择。”假如你的应用中有高级的国际化需求,他们的分析报告表明 Django 会是最好的选择。那些不需要国际化特性,但需要现成的 AJAX 功能,期望有大量不同模板以及不想被数据迁移困扰的开发人员,则将从 Ruby on Rails 中受益匪浅。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

为啥没人评论? by Li Cao

很可惜我今天才看到这则消息

另外 by Li Cao

我好奇Django和Rails哪个性能好一些,也许是两只乌龟赛跑,不过总有区别

Re: 另外 by 亮 徐

两个产品目前都在发展过程中,不过关于Rails的资料现在更多一些。

学习 django by qiu eiffel

最近开始研究 django ,感觉 django 很多设计思想很好,而且贯彻的很彻底(比如松耦合),内置的国际化支持和后台管理界面等功能都很吸引人,URLconf 的设计很棒,以前我总以 ror 的方式来看django ,似乎有欠公允。现在真正明白了一句话:“when you in Rome, Do in Rome as Rome does"

Django不是Rails的仿制品 by Ang Gao

“Django不是Rails的仿制品”,文中这句话确切说出Django爱好者的心声。提到Django,常被说为Python的ROR框架,其实用过的同学们都清楚,Django拥有众多独特的创新之处,像页面模板嵌套和缓存,以及根据实体关系映射自动生成的后台管理模板等等。而且Django框架的版本一直没有停止更新的步伐,最新是23号release的0.96版本,这样看来Django的用户必将会越来越多。

Re: Django不是Rails的仿制品 by sen firefly

绝对不可能是仿制,原因很简单。Django出现的时候ror还没有出现呢。不信你查一下。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

6 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT