为什么大部份开源项目不用MVC框架开发?

主流的PHP开源应用如:Discuz,WordPress,各种cms等
基本上都没有使用开源框架开发。

除了历史原因以外:
1、如果使用框架开发是不是更加安全成熟稳定?
2、有哪些因素导致这些开源项目不采用开源的MVC框架

3、使用开源MVC框架有哪些弊端?

通过题目看出题主对PHP很有感觉哦。我个人虽然不是一个专业的phper,当初确也学过并且真的实践过。感觉php确实是逆袭的利器,成本低开发快,而且性能都还不错。额,跑题了,咱们今天不是讨论语言,而是应该转到开源、框架、mvc等话题上。

首先说说楼主的题目,我不知道你是怎么理解mvc的。mvc是一种设计思想,是一种设计模式。这个应该没错,但是任何一个框架的卖点绝不是因为他是遵循mvc模式开发的。而是因为它实打实的提供某类问题的快速解决方案。你使用它是因为你有这样的需求它能给你带来便利。但凡某个mvc框架的介绍基本都是这样的,xx是一个用来解决xx问题的mvc框架,你应该可以看出,重点是能解决什么,而不是后面附带的mvc框架。框架就好比给程序员使用的产品,一个产品如果不是针对某类具体问题而生的,那么这个产品的意义就不好说了。如果你仅把mvc当做一个产品,那么就好比你的产品什么都能做,但是什么都做不好,谁都不需要这类产品。

我想我刚才绕远了,其实我只是想说我们选择一个框架往往取决于该框架的开发目的,而不是开发模式。无痛人流要多少钱

说起框架我立马就想起了java的ssh框架。好似成了java本身的一部分一样。现在学过java的人,一般都会接着去学习ssh框架。而且ssh使用率也非常高。想起了以前读书时那段在图书馆啃着java大块头书籍的时光了。哎,往事不堪回首啊。好了,赶紧转入正题。

接下来说说引入一个框架可能产生的问题:
  • 性能损失。但凡框架都会带来性能损失,这也是一些对性能要求很高的项目往往不会使用框架,而为自己的场景定制优化。当然这个性能在如今来说大概也可以忽略了。
  • 复杂度提升。学习成本和部署成本这就是你必然要面对的问题。
  • 适应性。框架一旦引入,你的整体结构就被固定死了,你需要按照固定的模式去使用,这个地方加一些自己写的具体代码,另外一个地方加一点,这些都是框架帮你规定好了的。这东西可能其实也挺好,方面你后续维护什么的,但是你得去适应。
  • 摩擦。这个东西就不好说了,有些框架有些地方可能非常符合你的需求,有些地方却不是你想要的,甚至是反向的。这个时候你要么就去hack一下,要么就去修改一下该框架的源代码。总之你使用起来不会特别爽。

说了框架说说php语言本身。作为一门易学习使用,大量函数内置的这么一门语言。你发现你很多操作都不需要自己封装实现,内置的都已经足够强大了。以前在深受mvc熏陶下,我用php写东西会这样,首先建立module,view,server3个目录,然后按照这种思路去填充对应的代码。这算不算一种mvc的简易实现了?所以个人觉得php内置的强大可能导致更少的使用框架。一个框架不能过于抽象,也不能太具化。对php来说这点就很难把握。有时候你应该想想你需要的是一些php代码片段还是一个框架。

Discuz,WordPress等这些东西为什么不使用开源框架?我也想尝试着回答。但是只是揣测而已。
这些东西往往职责单一,目标明确,而且使用php开发,其代码量也不一定非常多。使用框架一来难以灵活适应场景需求,而来其带来了更高的复杂度。这类大众类产品,大部分用户需要的是快速安装使用,少部分程序员希望修改自定义。所以不管出于何种需求,复杂总不是个好东西。还有可能的原因就是作者看不上别人的代码。自己怎么写怎么爽。开源代码往往追求自由,而商业项目往往追求效率。所以商业项目往往会更频繁的使用框架。

说了这么框架的坏话,因为这是我们问题的聚焦。其实好的框架能够省去你大量的工作,节省你很多时间。所以框架本是一个好的东西,而往往不好的是它遇到了一个不理解它的程序员。

我想我们任何一个人或集体在选择一个开源框架的时候一定要明确自己的需要和了解你将使用的框架。做了必要的利弊权衡之后,你才可以确定是否使用该框架。框架不是你想用,想用都能用,否则最后知道真相的你眼泪只能掉下来。




你可能感兴趣的:(为什么大部份开源项目不用MVC框架开发?)