開源Web框架PHP與Ruby on Rail的比較

    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須要更多的研發成本投入。這絕對是一大利空。session

 

    剛纔強調了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。工具

相關文章
相關標籤/搜索