Home  >  Article  >  Backend Development  >  开源Web框架PHP与Ruby on Rail对决_PHP教程

开源Web框架PHP与Ruby on Rail对决_PHP教程

WBOY
WBOYOriginal
2016-07-13 10:37:37876browse

PHP与Ruby on Rails两大阵营均拥有大量各自的忠实粉丝。拿两者作比较,本身就是难以取舍。无论谁赢了,都会引来对方粉丝的口水。受此影响,在两者选其一这个问题上,开发者通常会显得犹豫不决。这篇文章的出发点虽然是比较,但并不是一边倒式地唱盛唱衰,而是辩证式的综合对比。没有好坏,适合自己的才是最好的。

实际上,拿PHP与Ruby on Rails比较是个伪命题,是不公平的。相比于Ruby on Rails语言加框架的完整性,PHP仅是一门编程语言。你看,PHP已经输在起跑线上了。但PHP拥有四两拨千斤式的轻巧与灵活,这就意味着它消耗极少的内存资源,性能卓越。另一方面,PHP社区是成熟的、稳定的,各种PHP扩展插件与工具包百花齐放,百家争鸣。如此看来,PHP又扳回了一成。

PHP具有性能高、插件多的优势,并不意味着它没有缺点。PHP语法源自脚本风格,却加入面向对象特性,这种画虎不成反类犬的不伦不类,饱受诟病。这也许可以成为Ruby on Rails粉丝攻击的软肋。另一方面,如前所述,PHP作为单一编程语言,不具备Ruby on Rails的框架特性。这就意味着,除非借助插件与工具,单靠PHP从零开始开发应用程序,需要非常高的编程成本。比如,为取得与数据库的连接,你不得不从头开始写一个数据库连接器API。但有时候,缺点其实也是优点。不同于Ruby on Rails,受限于自身的框架,PHP则可以灵活自如的选择成熟稳定的第三方插件与工具。这就好比说,单身的同志也大可不必太羡慕成双成对的鸳鸯,因为没有选择往往意味更多的选择。不同的是,爱情鼓励专一,而“脚踏几只船”是PHP的卖点,开发人员可以同时选择不同的框架,实现与各种单一功能特性的最佳匹配。在这一点上,对于没有选择的Ruby on Rails来说,只有羡慕的份儿了。正因如此,相对于PHP开放性地支持第三方插件而言,Ruby on Rails天生的封闭特性,无可避免地要面临性能换取功能的挑战。每当遇到无法满足业务程序需求的时候,就意味着Ruby on Rails需要更多的研发成本投入。这绝对是一大利空。

刚才强调了PHP的很多优势,如果就此打住,相信会招来Ruby on Rails粉丝的无数口水。是时候该替这个后起之秀说说话了。Ruby on Rails作为一个框架,是专为Ruby这门编程语言设计的。Ruby的设计理念很清晰,就是完全的面向对象,语法非常紧凑,清晰,代价是损失一定的灵活性。从编程语言的性能对比来看,Ruby通常会比PHP慢,耗用更多内存。不过,Rails框架能帮助Ruby快速开发出Web应用程序,算是一种弥补吧。这是一个典型的功能换性能的例子。作为一个Web框架,Rails具有许多非常多非常棒的特性。比如,Rails的ActiveRecord特性能支持数据库表记录与Ruby对象的映射,带来的好处是,Rails帮助开发人员隐藏繁琐的SQL细节,直接使用Ruby就轻松实现对数据库的增删改查。换句话说,Ruby开发人员无需依赖SQL,照样玩转数据库。另外,Rails支持很多的HTML特性,比如HTML代码生成器,session机制等,可以更加轻松便捷地构建Web应用。这也觉得是一大利好。

Rails众多强大的特性,从另一个角度来说,也是一个弊病。比如,Rails虽然屏蔽SQL,同时也意味着Ruby开发人员失去了直接操控SQL的机会。功能多也未必全是需要的。这样看来,鱼和熊掌,真是不可兼得。

说了这么多,到底谁赢谁输呢?还是那句话,没有谁好谁坏,只有谁更适合。选择自己熟悉的领域始终是没错的。从个人的感觉来说,还是偏好PHP。第一,PHP先入为主,大量的网站采用的都是PHP,尤其是论坛。起码PHP提供的工作机会更多一些吧。第二,Rails提供的很多特性,其实PHP都具备,重复发明轮子是不鼓励、不推荐的。最后,PHP是轻巧、灵活的,快速的,很符合乒乓球式的小、快、灵特点。如果不需要框架的辅助,PHP本身其实就够了,如果需要,以此提高开发效率,也很容易集成现有各种成熟、稳定的插件与工具。基于这三点,即便Ruby on Rails具有很多优点,个人还是把奖颁给了PHP。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/735151.htmlTechArticlePHP与Ruby on Rails两大阵营均拥有大量各自的忠实粉丝。拿两者作比较,本身就是难以取舍。无论谁赢了,都会引来对方粉丝的口水。受此影响...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn