【原创】对Qee和Yii的一点比较

刚看了论坛里有人问起Qee和Yii的对比,其实我之前也想过这个问题,所以索性写些东西,就当抛砖引玉吧。

Qee是国内php开源社区的积极倡导者和很有影响力的开发者廖宇雷(人称“廖大”)开发的,Qee的前生是兼容PHP4的Flea,我是从那时就开始关注这个项目,要说也有两三年了(不过近来对QEE关注少了些);而对Yii从知道到现在也有快两个月了,虽然还远远说不上精通,倒确实从Yii学到了很多东西,也开始练习用Yii做一些小项目,所以我想我还是可以罗嗦几句:)

我觉得很有意思,就像他们的名字一样,Qee和Yii其实有很多相似之处,Qee和Yii一样都有一位十分优秀的Leader,虽然我和他们从未谋面,但从文档、代码到论坛交流,都能深深感觉到他们技术的专精和对事业的严谨态度,廖大和Qiang都是技术很好,并且都有对开源社区的执着精神(呵呵,没有这个,就不会有Qee和Yii了);要说性格方面,Qiang给人十分稳重的感觉,很有学院派的风格,有大侠之风;而廖大在国内PHP界是以性格直率、脾气火爆出名了,谁得罪了他可有好受的,我印象深刻的是有一次我看到廖大与一个侵权抄袭Flea的人在网上展开骂仗,廖大不仅语言犀利、气势凌人,而且黑白两道的词都用上了,把那个抄袭者骂了个体无完肤,而且事后还把他们的巨长的聊天记录整理了一遍放在网上,再次好好地羞辱了那人,我是看了那个聊天记录后就记住了这个爱憎分明、嫉恶如仇的廖大,性格上他更像一个草莽英雄。

不好意思,似乎有些跑题了,回到框架本身,在技术上Qee也和Yii有一些共同点,事实上就我所知,Qee的开发者廖大就仔细研究过Prado,并写了一篇文章仔细分析过Prado的优劣,其中明确指出了Prado的性能问题,指出Prado必须改造设计,不然性能一定会阻碍其发展,也许这就叫英雄所见略同,于是我们就看到了今天的Yii。我相信Qee一定借鉴了Prado的一些特点和优点;另外两家的大家可以看看两家自己描述的特色功能,有很多的相似之处,比如MVC,Cli tool, url rounte,html widget,AR,Log,behavior,Cache,etc…等等,我这里就不重复了;而且两家的社区风格都很像,主要由Class Referrence(API) ,Cook book,extensions加论坛构成。要说框架层面上的对比,我觉得是Qee的Unit Test做得更好,他是从一开始就提供了比较全面的Unit Test coverage,在这点上Yii可能要等到1.1版才能完善,因为商业用户再决定选择框架时会以这个作为代码质量的重要考量,所以希望Yii能重视这个问题。在技术上,Qee还有个特点,它和Symfony一样,使用YML格式作为配置文件的默认格式,这个特点的优劣是见仁见智,我个人觉得Yii用php的array更简单,毕竟在学习和熟悉YML还是又多了一道门槛,对初学者不利;可能Yii是以英文开发的原因,在I18方面,我觉得Yii做得更好,从另一个角度看,Qee的中文化做得更好;另外,在缓存上,Qee还支持文件缓存,目前Yii还没有(不过Qiang已经说会在1.1中加入);两个框架都十分强调性能,,廖大前一段在qee论坛上还曾亲自做过Yii和Qee的benchmark,据他的结论,Qee比Yii还快一些(有兴趣的可以去Qee论坛看看),我没有做过测试,但我相信Qee和Yii在PHP框架中都是性能非常优秀的。

要说目前最大的不同点,我觉得是两者的市场定位和运作方式。在市场地位上,很明显Qee主要就是针对中文市场的,在目前看来Qee也没有什么具体的国际化的迹象;而Yii一出生就继承了Prado的国际化运作经验,所以在国际化上Yii无疑走在前面,可以在全球推广,具体到国内,我觉得适合商业外包和与国外开发者共同开发的项目。在商业层面上,廖大一年多前已经成立“起源科技有限公司"并以公司的名义来运作Qee(还有Flea),由一个以其为首的开发团队维护,并对Qee进行了商业支持,大家可以去他们官方网站看看。而Yii目前还主要以社区的形式存在,主要开发者据我所知只有Qiang和Wei,当然,由于Yii开始的时间还不算太长,这是可以理解的。然而,正如我在以前一篇回复中提到的一样,Yii能否从众多开源框架中脱颖而出,Yii必须要有自己的商业模式和更成熟的管理运作和吸引更多的社区开发者参与,要知道商业公司对框架的商业支持能力是非常重视的,这点希望Yii能做的更好。

至于框架选择,我想说,没有”最好“的框架,只有”最适合“的框架,开发者一定要根据实际需要来选择在什么情况下选择哪种框架。

结语:啰嗦了这么多,作为用户,就我自己的一些使用php框架的经验,Qee和Yii无疑都是十分出色的(他们都充分利用了PHP5的特性,代表了新一代PHP框架的特点,有着很光明的前景),我更为他们的作者都是华人感到骄傲,它体现了中文开发者对开源社区的参与精神和贡献,祝愿Qee和Yii都能在各自的领域都能闯出一片属于自己的灿烂天空。

Will, 非常感谢你的比较。现在我比以前更了解Qee了。

我原来也想业余时间弄一下QeePHP,但因为他不支持Sqlite,所以作罢。我有上百个Sqlite个人及商业的中小型数据库,转QeePHP太麻烦。

我曾经简单运行过QeePHP,我不太喜欢QeePHP的Web -Based 代码生成界面。感觉完全没有必要。任何一个用Framework的人,都会一些必要的编程知识。完全傻瓜式的界面我觉得没有必要。

我不了解QeePHP的作者。但通过论坛里的一些回复,感觉Will对Qiang的评价是非常中肯的。我非专业程序员,属于玩票性质,问过很多非常低级的问题,Qiang总是很耐心。这一点难能可贵。

至于商业模式,我觉得商业动作是非常必要的。至少一些商业咨询服务对这个平台是有很大的反哺作用的。Yii的好处是其英语出身,有强大的国际英语程序员的支持。中国人口众多,但非常出色的程序员(比如说Qee的作者),其实是不太多的。其中有很多原因,不想在这里多说。Yii如果加上一定的商业化运作,辅以国际英语程序员的支持,其前景肯定非常可观。

@will: 谢谢你分享你的经验和比较。

补充一点:Yii也有unit test,它cover了主要的功能,包括DAO, AR, URL, Caching, 还有许多基本类。由于Yii的代码量比较大,我们今后还需要在testing方面做更多的工作。

通常人们所说的Yii欠缺testing是指它没有发布对用户代码做testing的支持。关于这一点,我们已经做了些工作,代码也已完成80%左右,计划在1.1版本里正式发布。

抛出砖,果然引来了玉,:)

@moho

不客气!我很同意你对Yii前景的看法,我本人常试过不下10种比较流行的PHP框架,我觉得Yii在特性上是我最看好的,他借鉴了当今主流PHP框架的优秀的设计模式思想(包括ROR),加上庞大的全球PHP开发者数量,假以时日,一定能有很好的成绩。至于商业模式,我们在之前一个贴子也稍微讨论过,这个话题很大,改天我们可以好好讨论一下,给Qiang一些建议,也算是为Yii做点贡献。

@Qiang

谢谢你的补充!我在论坛里已经注意到,Yii1.1将有许多令人期待的新功能面世(RESTFul support, Unit Test, 似乎还有Web based code generator等) ,强烈期待!

我以一个菜鸟的身份来说一下

1、Qee的YML对我来说比较,而Yii用php的array就简单多了,Qee的表单更难,我看了很久也不懂,所以放弃了,至于Yii的表单–我也没手写过,都是用Yii shell来生成的

2、非常喜欢Yii shell,这是我用Yii的主要原因之一

3、Yii和Qee的Class Referrence文档对我来说都是太难了,看不懂

翻到这个帖子,说一说我对框架的看法。

我最近也听说yii很牛,性能很好,但是暂时我还不准备深入研究,等过一年后再看yii的发展。因为什么,因为yii和prado一个作者,prado我也是追踪过的,放弃的原因就是因为本身社区没有活力,开发也缓慢。希望yii不要走老路。

我现在用symfony,虽然他很慢吧,但是我很喜欢symfony社区的氛围,感觉框架很有活力,即使现在有问题,在这么活跃的开发下也会慢慢解决的。

希望yii在社区建设方面多努力。

我不是来吵架的,具体到使用框架,有经验的开发人员用哪个也能做出好程序。

我简单说一点。框架的用户是我们,我们用了框架开发出来的软件,客户就是其他人了。大家都是做软件的,软件做的被用户说这不好,说那不好是正常,而且有时候连自己都觉得不好,想翻了重头再来过。没有重构过的软件不是好软件。珍惜现在珍惜目前,放弃原来的框架用新的框架是痛苦的。各人的情况不一样,还好我运气好,php开发用的第一个框架就是yii。但我确实感觉到yii的设计特别棒,感觉像个有着丰富经历的人,全面,效率高。感谢yii和qiang,感谢qq群里50位兄弟的互相帮助,让我感受到yii的热情和力量。

刻画的不错

我也算是个新手,但我研究过几个PHP Framework了,相比来说,Yii Framework我感觉是设计比较合理的,而性能也是比较出色的,最开始我学的Zend Framework,最大的特点是类库巨多,所以才造成框架的庞大,这一点Yii直接用扩展,而且还可以使用其它框架的类库,十分方便.

第二个框架是CodeIgniter,我用了不到一周时间就学的差不多了,还做过两个项目,虽然学习成本比较低,但我感觉开发起来也不是太方便,因为是兼容PHP4的,不是自动加载类,所以每个控制器都要把用到的类和helper都要加载一遍,而且不能用控制台生成代码,手写代码量是非常大的,这一点Yii我感觉做的是比较好的!

php菜鸟,刚学习php就发现了yii框架,缘分啊

我也用过zend framework,CodeIgniter,kohana,qee,doophp以及yii,最终还是选择yii,

因为特性最全,

定制性,扩展性高,

性能也算中等吧,

也是与jquery结合得最好的,

社区文档质量都非常高,

也很佩服的QIANG能力与耐性。

性能的问题我想流量上来再考虑,毕竟大多网站瓶颈都在DB,日ip百万之内都可以简单的扩充web服务器或者设置缓存来解决。

严重支持Yii,虽然我也是PHP的新手,但在系统设计、C++方面还是有一定的研究,以相关的经验来审查Yii的设计和思路,非常棒!

感谢yii,还有qiang

YII也是我用过最舒服的,大家的支持才是对qiang的工作的肯定。

确实如此,去年就看过YII,但由于种种原因,后来还是选择了QEE。这样也好,先学习QEE,再来学YII,感觉简单多了。

其实QEE的很多思想都源自于YII,个人认为QEE是YII的缩略版,YII更全面,更强大。