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

  • Luciano Ramalho
  • Jason lai

2006 年 11 月 27 日

话题:RubyWeb框架Ruby on Rails语言 & 开发

原文发布于 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 中受益匪浅。



RubyWeb框架Ruby on Rails语言 & 开发