欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2024-02-11 15:57:28
...
主流的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开发,其代码量也不一定非常多。使用框架一来难以灵活适应场景需求,而来其带来了更高的复杂度。这类大众类产品,大部分用户需要的是快速安装使用,少部分程序员希望修改自定义。所以不管出于何种需求,复杂总不是个好东西。还有可能的原因就是作者看不上别人的代码。自己怎么写怎么爽。开源代码往往追求*,而商业项目往往追求效率。所以商业项目往往会更频繁的使用框架。

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

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

要是朋友你能具体说明你所指的php开源mvc框架,也许我能回答得更贴题。以上仅为个人愚见。 你说的开源项目范围略显大,也不知道你看了哪些开源项目。不同的开源项目宗旨和适用的场景是不同的,就我见过的而言,可以大致的分为下面这几大类:
  1. 基础工具库,帮助你搞定非常dirty或者tricky的事情,让你专注于业务逻辑,比如前端领域的jQuery,封装了浏览器兼容性的很多问题,给前端工程师提供了非常统一的接口;
  2. 工作流框架,帮助你梳理某些工作的典型工作流,比如网站处理用户请求,并给出响应,涉及到数据层,逻辑层,视图层等等,这些框架大多使用了很多比较成熟的设计模式,典型的模式是MVC,当然,为了将这些框架做的更加易于扩展,还会有其他的模式被使用,比如工厂模式,代理模式,这方面的框架就太多的,每种语言都有很多,数不胜数,比如Java的Spring,PHP的Cake,Zend,Think,Javascript的backbone,nodejs的express,python的django等等。
总的来说,每种开源的项目都是作者将其工作的沉淀和技巧的积累放出来供他人使用,期望得到他人的贡献,众人拾柴火焰高,目前github上的很多项目都是如此,有了这些项目,后来者的工作可以说是站在巨人的肩上。 我估计这2家在开发的时候,MVC思想还没有流行到PHP吧。
现在PHP也流行MVC了,他们自己就已经有自己的一套框架体系了。
之前有稍微看了下他们的源码,感觉都是疯子写的。让我是没法维护的,不知道他们的团队是怎么想的。可能是面向过程的敏捷开发吧。又或者是考虑到性能或其他。
但是看看现在的出来的开源程序,基本上都是遵循MVC的,像PHPWIND,SHOPEX等,所以,MVC还是必然方向吧。 我自己也在考虑用不用框架....感觉自己开发冗余代码是不是会很多... 个人觉得 用框架就是依赖别人,他们完全有能力搭建自己的框架,与其花费精力去研究一个框架,还不如自己写一个框架。(大型项目对框架的扩展修改是非常频繁的。) WeCenter国内的一个开源社交类问答程序就是用的Mvc框架,可以去试试 我觉得MVC挺好的,开发效率挺高的。 读过dedecms的源码,写得有点烂