Ruby On Rails, Very Cool!

两周前,到CSDN转了转,看看最近又有什么新技术,发现通篇都在吹嘘Ruby on rails,似乎说它要干掉Java了。连开源界的大哥大也放弃Python,开始鼓吹Ruby了。于是怀着好奇之心,去研究一下Ruby On Rails到底是什么东西。

一年前其实是看过它的官方网站的,一篇快速入门没有看懂,也就没有深入。现在再来看,思路要清晰的多了。而此前刚刚研究过Zend PHP Framework,觉得它的MVC设计思路非常好。三种不同的东西分别放在不同的目录它,只要在首页加一个Dispatch,就能自动完成对路径的分析,调用正确的Controller,并传递正确的参数,还顺便解决了静态化Url的问题。可惜,它的版本太低了,只有0.1.5,再怎么说它稳定,也不敢用在商业环境中。它甚至还自己开发了Lucene的替代包,不再需要去调用Java接口了。不过目前也是刚刚出来的功能,只有最基本的一些功能而已,也不知道对中文支持怎么样。

读完了Zend PHP Framework的官方文档,再来看Ruby On Rails的架构介绍,这才恍然大悟,原来,Zend是照抄ROR的项目结构的。Python On Zope也研究过,但是它的开发模式感觉比较混乱,不同的东西放在完全不同的地方,找起来比较困难,而且思路完全不连续。但是ROR就不同了。它提供给你的是一个跟以前的开发基本完全一致的框架,只是已经帮你定义了各个目录和文件的名称而已。包括MVC,Helper,Test全部都定义好了。你只要往对应的目录下加一个对应的文件,整个网站就运行起来了。而且最方便的是它的Generator脚本,可以自动帮你完成添加Model,Controller的工作,并顺便帮你建立Test文件。而且它的数据库脚本是使用Ruby的语言来定义数据库结构,然后运行一下rake,数据库就建好了。并且在开发的时候可以定义三种不同的数据库环境(开发,发布,测试),在运行Test的时候,它会自动清除你以前的数据库,然后自动重建,而这一切,都只发生在那个测试数据库中。这些工作在其它语言的开发过程中,都是需要你自己来完成的,而且一不小心,可能就把你的开发数据库给删了。

如果只有这些,那么ROR也只不过是个脚本生成器了。ROR还有一个强项,就是ActiveRecord,相当于Java中的Hibernate,自动完成ORM映射,不需要一行脚本或者配置文件,它可以自动从数据库中自动表结构,并完成字段的映射。对多种数据表关系(Many-To-Many,One-To-One,One-To-Many)都有良好的支持,并且有一个非常好用的操作符“<<”,自动完成一系列的相关操作。

而且,ROR有着良好的Ajax的内在支持。它充分利用了prototype,将Ajax调用最大限度的简化。另外,对网站的框架式布局,和模块式调用都有着天生的支持。

正是因为这些特点,ROR才敢号称它的开发速度是Java的10倍。但是它的缺点也是相当明显的,就是运行效率。目前来讲,你可以用ROR快速开发,抢占市场,然后当程序真的无法承受运行压力的时候,用Java来重构。经过JavaEye网站的实际使用,一台普通的2万元以内的服务器,足以承担日PV超过20万的论坛程序。如果硬件足够强劲,应付一个“豆瓣”都是没有问题的。如果日PV超过了100万,重构也不是什么大问题了吧。

如今,我真的爱上这个东西了。虽然PHP界有Zend Framework,Python界有Django,都是模仿ROR的实现,但是当前来讲,这些都还不是太成熟。我在使用Django的时候,数据库乱码的问题始终没有解决。而且,Python的执行效率,比起同样是脚本语言的Ruby,也不会高到哪里去。

你可能感兴趣的:(ruby on rails)