写点什么

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

2006 年 11 月 27 日

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

2006 年 11 月 27 日 09:263655
用户头像

发布了 117 篇内容, 共 97384 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

系统架构的一些思考

jason

「架构师训练营」第 4 周 学习总结

guoguo 👻

极客大学架构师训练营

架构师训练营第四周作业

W_T

消息队列(四)如何处理消息丢失的问题?

奈何花开

Java MQ 消息队列

一份还热乎的蚂蚁金服面经(已拿Offer)!附答案!!

猿灯塔

Java

架构师训练营 -- 第四周作业

花花大脸猫

极客大学架构师训练营

架构师训练营 第4周作业

Lingjun

极客大学架构师训练营

【架构师训练营 - 周总结 -4】互联网系统架构演进

小动物

总结 极客大学架构师训练营 第四周

架构师训练营 第四周 学习总结

一雄

学习 极客大学架构师训练营 第四周

游戏夜读 | 不受欢迎的那个人

game1night

二胖参数校验的坎坷之路

java金融

Java springboot 参数校验 级联校验 Hibernate-Validator

Elasticsearch从入门到放弃:分词器初印象

Jackey

elasticsearch

Week4-Homework

架构师训练营 第四周 作业

一雄

极客大学架构师训练营 作业 第四周

管理学概念 - 特纳论断

石云升

核心竞争力 特纳论断

企业级业务架构设计读书总结

hiqian

Python多重继承问题之MRO和C3算法

王坤祥

Python MRO C3算法 多继承

第四周作业

田振宇

架构师第四课总结

老姜

架构师训练营 Week04 学习心得

极客大学架构师训练营

ARTS - Week Six

shepherd

Java algorithm

架构师训练营第四周作业

Linuxer

极客大学架构师训练营

架构师训练营 -- 第四周学习总结

花花大脸猫

极客大学架构师训练营

架构师训练营 第 4 周总结

Lingjun

极客大学架构师训练营

从业务代码到Openjdk源码的debug之路

飞影

Java debug 深入理解JVM Openjdk TLAB

以懂行助力加速:华为中国生态之行2020蕴藏的时代钥匙

脑极体

一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。

老姜

【架构师训练营 - 作业 -4】互联网应用面对的问题

小动物

极客大学架构师训练营 作业 第四周

架构师训练营第四周总结

suke

极客大学架构师训练营

架构师训练营:第四周作业

zcj

极客大学架构师训练营

万文长字JVM总结,面试必备

java金融

Java CMS JVM 垃圾回收

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

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