相比于 Django、Pylon 等 Python 框架,Ruby on Rails 是否有很大的技术优势?

如果有优势,主要的技术优势是什么呢?
关注者
521
被浏览
112,935

23 个回答

我实习时候的指导老师(纯洁的白羊座

@清风

)在给实习生上第一节课的时候说过这个问题,大概的意思是:你的应用做的越大,框架能提供给你的东西就越少。新型框架在一开始开发的时候会带来很大的效率提升,但是往后发展的时候,这种帮助会越来越少,自己的设计会越来越多。

大概是这样的原因,豆瓣至今还在用 Quixote,因为除了路由分发,其他部分任何框架都已经提供不了太大的帮助。框架提供的是框架的工作模式。

所以我觉得对于一般的应用来说,如果能从框架中得到效率优势,那么 Ruby on Rails 也好,Django 也罢,谁多一点谁少一点关系并不很大。反而文档质量、社区活跃程度、有质量的用户数量(就是在 StackOverflow 或者邮件列表有中能真正解决问题的用户数量),这些非技术因素影响会更大。

框架和框架之间当然有区别和优势。

比如 Spring 的事务管理。比如 Rails 的快速原型。另外,“轻型框架 Quixote,Sinatra,node 的一些框架”,甚至“没有框架”,也是一种框架。

而选择框架,应该说不是技术人员考虑的问题(现代语言上的差异,有时候小到根本不值得一提)。架构师才需要考虑这些。

考虑 Scalability 下的成本,用 Spring 的服务器集群来管理事物,是否要比上 Oracla 集群便宜?

考虑快速原型,用 Rails 是否能在一个月内拿出个可用的东西给 VC 看?

考虑用户有邮件模版编辑和自动分发的需求,因为 PHP 有现成的产品,是否优先选择他?

考虑系统涉及大量个人数据,基于安全性的考虑是否选择 Java 的框架?

当需求更多样化的时候,还可能需要混合多个框架。

Spring 的 API + Rails ?

如果有简单事物的大量并发,是否考虑加入 Node?

如果有大量数据的简单索引,是否考虑 NoSQL 数据库?

为了多种语言下的不同的库都很重要,是否考虑用 Python 做粘合剂?

今天混合框架已经很常见了。今后,语言和框架恐怕也难以出现大统一。既然大家各占擅场,根据需求组合才是明智的选择。