为什么大部份开源项目不用MVC框架开发
主流的PHP开源应用如:Discuz,WordPress,各种cms等,基本上都没有使用开源框架开发。除了历史原因以外,我有下面的一些疑问:
1、如果使用框架开发是不是更加安全成熟稳定?
2、有哪些因素导致这些开源项目不采用开源的MVC框架?
3、使用开源MVC框架有哪些弊端?
我们选择一个框架往往取决于该框架的开发目的,而不是开发模式。
说起框架我立马就想起了java的ssh框架。好似成了java本身的一部分一样。现在学过java的人,一般都会接着去学习ssh框架,而且ssh使用率也非常高。
接下来说说引入一个框架可能产生的问题:
1、性能损失:但凡框架都会带来性能损失,这也是一些对性能要求很高的项目往往不会使用框架,而为自己的场景定制优化。当然这个性能在如今来说大概也可以忽略了。
2、复杂度提升:学习成本和部署成本这就是你必然要面对的问题。
3、适应性:框架一旦引入,你的整体结构就被固定死了,你需要按照固定的模式去使用,这个地方加一些自己写的具体代码,另外一个地方加一点,这些都是框架帮你规定好了的。这东西可能其实也挺好,方面你后续维护什么的,但是你得去适应。
4、摩擦:这个东西就不好说了,有些框架有些地方可能非常符合你的需求,有些地方却不是你想要的,甚至是反向的。这个时候你要么就去hack一下,要么就去修改一下该框架的源代码。总之你使用起来不会特别爽。
说了框架说说php语言本身。作为一门易学习使用,大量函数内置的这么一门语言。你发现你很多操作都不需要自己封装实现,内置的都已经足够强大了。以前在深受mvc熏陶下,我用php写东西会这样,首先建立module,view,server3个目录,然后按照这种思路去填充对应的代码。这算不算一种mvc的简易实现了?所以个人觉得php内置的强大可能导致更少的使用框架。一个框架不能过于抽象,也不能太具化。对php来说这点就很难把握。有时候你应该想想你需要的是一些php代码片段还是一个框架。
Discuz,WordPress等这些东西为什么不使用开源框架?
这些东西往往职责单一,目标明确,加上使用php开发,其代码量也不一定非常多。使用框架一来难以灵活适应场景需求,二来其带来了更高的复杂度。这类大众类产品,大部分用户需要的是快速安装使用,少部分程序员希望修改自定义。所以不管出于何种需求,复杂总不是个好东西。还有可能的原因就是作者看不上别人的代码。自己怎么写怎么爽。开源代码往往追求自由,而商业项目往往追求效率。所以商业项目往往会更频繁的使用框架。
说了这么多框架的坏话,因为这是我们问题的聚焦。其实好的框架能够省去你大量的工作,节省你很多时间。所以框架本是一个好的东西,而往往不好的是它遇到了一个不理解它的程序员。
我想我们任何一个人或集体在选择一个开源框架的时候一定要明确自己的需要和了解你将使用的框架。做了必要的利弊权衡之后,你才可以确定是否使用该框架。框架不是你想用,想用都能用,否则最后知道真相的你眼泪只能掉下来。