关于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

相关文章
相关标签/搜索