關於Yaf的一些說明[轉Yaf做者]

關於Yaf的一些說明[轉Yaf做者]

 

說明下,這篇文章轉至於yaf做者鳥哥的博文,由於最近在系統的學習Yaf框架,發現了這篇文章,感受對於瞭解Yaf框架仍是頗有用處,因此轉過來和你們分享一下 

Yaf是我在倆年前寫的一個PHP擴展的MVC框架. 開發Yaf的目的是爲了解決使用框架帶來的性能降低的經典矛盾. 

最初要感謝百度的同仁們的信任, 以及當時各位老大的支持, 允許也勇於讓我」試錯」, 才讓Yaf順利的度過了」沒人敢用」的階段, 大量的百度的新的產品基於Yaf開發, 讓Yaf的穩定性獲得了充分的驗證, 也廣泛的提升了PHP應用的執行效率. 

而如今, Yaf的高性能又一次在微博的應用中獲得了證實, 經過遷移框架到Yaf, 和一些其餘優化手段, 咱們成功的讓新版微博的TPS提升了76%之多, 響應時間降低了近一半. 

然而, 我也看到, 還有很多同窗對Yaf有疑慮, 甚至有質疑, 有人認爲」使用C寫框架? 那不是回退到寫CGI的時代了?」, 因而我想我有必要寫一篇文章, 詳細介紹下我對Yaf的一些理解. 

首先, Yaf是一個框架, 那麼你們對框架有什麼感受? 好比你們在平時使用Yii, Zend Framework的時候, 會去修改它麼? 當你的一個業務基於某個框架開發完成之後, 你以爲你之後還會去修改框架代碼麼? 

這就是Yaf之因此能夠作成框架的一個前提條件, 那就是框架是不易變的, 通常是不須要維護的, 好比在百度使用的Yaf, 至關於Yaf 2.1.0, 雖然從2.1.0 到如今的2.1.18, 新增了一些特性, 修復了一些bug, 可是隻要你的應用基於此框架開發完成了, 穩定運行了, 那你並非必定要把框架升級到最新版. 

第二, 你們在使用其餘框架的時候, 若是要調試, 會須要去讀框架代碼, 而且經過在框架代碼中打信息來調試麼? 我想說, 這樣的狀況, 不多不多, 是的, 當一個開發者對某個框架特別熟悉的時候, 他清楚的知道這些框架的流程, 因此可能經過這樣的方式來調試, 然而這不是必須的. 

Yaf由於是擴展, 因此特別注意開發/調試的便利性, 它提供了插件機制, 提供了豐富的debug信息, 而且專門爲命令行下的調試作了特別優化, 儘量的在出現錯誤的時候, 給予更多的錯誤緣由. 因此, 你幾乎徹底不須要了解框架的具體實現, 就能方便的調試. 

還有一些同窗對Yaf的實現表示擔心, 懼怕引入一個擴展, 會形成一些其餘問題. 

Yaf的實現, 都是基於PHP的內核API, 你能夠理解爲Yaf的執行層面, 和你的PHP代碼執行層面沒有不一樣, 而且充分的注意了避免對PHP帶來侵入性, 他遵照全部的安全限制, 因此在PHP內載入Yaf, 並不會帶來什麼問題(固然, 除非你的應用中, 有和Yaf提供的類同名的類). 

還有一些同窗, 擔憂, 萬一Yaf出了bug怎麼辦? 畢竟擴展的框架, 要維護比較困難. 

首先, Yaf有bug麼? 確定有, 就比如PHP, 它也存在不少Bug, 可是隻要你觸及不到, 那麼你就不會觸及到, 不存在開發的時候沒問題, 跑的時候有問題. 

另外, 對於Yaf的問題, 我基本上能作到快速響應, 這點如今的大量的Yaf用戶應該能證實吧? 若是真正的是Yaf的bug, 我必定會當即修復. 提供Patch. 而且, 除我以外, 也有更多的人對Yaf的實現開始瞭解, 我相信之後Yaf會有更多的維護者. 

另外, 還有很多同窗問, 爲何Yaf沒有ORM, 這裏有倆方面的考慮: 

首先, Yaf並非萬能的, 它只是解決了應用中, 最基本的一個問題, 就是框架帶來的額外的性能開銷, 然而這本部分的開銷和你的應用實際的開銷相比, 每每是很小的. 

可是, Yaf卻表明着一種精神, 就是追求簡單, 追求高效, 追求:」簡單可依賴」, 因此Yaf專一於實現最核心的功能, 提供最穩定的實現. 

相比ORM, 若是要實現的很方便, 那必然會很複雜, 在當時的狀況下, 實現ORM有可能會引入不穩定性 

第二, 也是最重要的一點是PHP已經提供了對DB的一個輕度封裝的PDO, 我認爲直接使用PDO, 會更加簡單, 更加高效, 我不但願提供一個複雜的ORM包裝, 鼓勵你們去拋棄簡單的PDO而使用ORM. 因此, 最初的時候, Yaf並不包含ORM. 

誠然, ORM能夠提升開發效率, 尤爲對於一些簡單應用, 因此我想在後續的Yaf的版本中, 會考慮加入ORM, 可是那也絕對會是一個簡單的ORM, 相似於Yaf的內建視圖引擎: Yaf_View_Simple, 簡單可依賴. 

固然, 由於Yaf是擴展, 而大部分的虛擬主機提供商是不允許咱們本身安裝擴展的, 這也就限制了Yaf的應用面, 在這點上, 我想我要特別感謝SAE/BAE的同窗們, 在不久的未來, SAE/BAE都會支持Yaf, 讓更多的我的開發者, 也能使用Yaf. 

Yaf相比其餘的框架, 目前仍是一個很年輕的東西, 雖然有一大堆熱心的同窗(大門, 黑饅頭, 燒雞, 等等)在和我一塊兒努力去豐富文檔, 提供實例, 但Yaf的相關輔助還倒是不如其餘框架豐富. 

因此, Yaf對於徹底沒有用過框架的同窗來講, 入門門檻會比較高一些, 但若是你已經使用過其餘框架, 那麼接受Yaf, 將會比你想象的簡單的多. 

最後, 我並非說, 你們都須要使用更高性能的框架, 我只是但願Yaf能給你們提供了一條路, 給你們提供多一種選擇而已. 

「Yaf只是最快的框架, 卻不是最完美的框架.」 

我會讓持續的讓他愈來愈完美. 我也歡迎你, 和我一塊兒, 讓他變的更完美. 

原文:  http://www.laruence.com/2012/08/31/2742.html 

參考來源: 
關於Yaf的一些說明[轉Yaf做者]
http://www.lai18.com/content/407120.htmlhtml

相關文章
相關標籤/搜索