深圳php高手吧 关注:3贴子:7
  • 0回复贴,共1

WEB编程架构改革初探

只看楼主收藏回复


长久以来,编程MVC架构深入人心。随着编程语言的不断进步和发展。这种架构始终没有进步,我们尝试着将MVC模式大胆进化为VC模式。【千万注意】,我用的是进化,是先有MVC,再有VC。而不是直接VC模式。
再次强调,不是说MVC模式不好。其实还可以进化得更好。当MVC模式你还不熟悉的时候,你无法理解VC模式。
表面上省略掉Model,是编程语言进化的结果。而不是退步。为此会带来效率的大幅度提升。
一、 省略掉model的前提条件。
1) 你必须要知道什么是Model。Model就是数据库操作层,负责与数据库打交道的相关操作。(在此省略很细的DB驱动层),将常用的数据库操作方法对象化。在Controler层可以不用直接操作数据库,将业务逻辑和数据处理分离。有利于程序扩展和维护。
2) 既然model层如此重要,为何要省略,不是这些好处全部没有了吗?
二、 省略掉model的实现。
1) 先说Model层的坏处:在MVC模式下,各种类之间的调用过于复杂,文件加载过于频繁,这就是php框架中MVC模式的带来的负作用,速度太慢了。像Java一样,大炮打蚊子,任何一个小动作,都扯了太多的类进来:这就导致2个问题,一是调用太多类已经由量变到质变。框架程序变得非常复杂:比如TP3.2。二是加载过多类,程序速度开始变得非常慢。程序速度瓶颈已经由DB转化为框架了。
2) 哪我们有木有一种方案,即能享受M层带来的便利,又能避免M层所带来的坏处呢?经过一段时间研究,我发现有一个这样方法。就是类似TP中的model层。将数据库操作,完全方法化。使用者在完全不用写任何SQL语句的情况下可以操作数据库。当然TP中很多Model方法还不够简单和傻瓜化。比如Join方法。还有封装的余地。
三、 具体实现:
1) DB类->Controller基类。
2) DB类当然就是封装数据库操作了。Controller调用DB类。来实现客户端需要方便操作DB的所有方法。比如where,orderby.count,join,joinUser,joinOwer等。
3) 用户UserControler直接继承基类Controler.数据库操作直接通过基类Controler实现。而UserControler 只顾管好自己的业务逻辑就好。
4) Model的功能,实际由基类Controler透明化,省略化了。因为基类Controle太强大。
四、 省略掉model后的强大好处。
1) 首先是层次简单,调用类减少,程序简单,速度增加,但model层提供的功能一点都没有减少,反而有增加。
2) 由于Controler层和Model层合二为一,带来的好处就是。Controler可以分步,直接操作数据库。在分步中间,就可以编写插件。而且插件可以集成在基类Controler中,或者继承于Controler后的子类。供其它子类调用。
3) 例子:分页和搜索插件:前台和后台几乎不用写一行代码(复制几行安装代码而已),就可以实现极为强大而又复杂的非常专业的搜索和分页功能。应用于任何WEB页。就是在省略model层下实现的。如果不是二者合为一。根本没有办法实现此插件。
4) 关于速度。由于连接数据库,全部采用Lazy需要时连接,和常用数据缓存功能,程序性没有一丝浪费。
五、 如何弥补省略掉model所失去的功能?
其实:有时候,有些功能,即不是业务逻辑,又不是数据处理。这时候,我们可以将此功能封装后,类库化,需要时调用。
六、 为此VC架构的php框架实现。
1、 控制器基类:调用DB(mysqlDB)类。通过方法实现客户端调用时不用任何SQL语句,就可以方便操作数据库。
2、 View类。实现模板标签解析。
3、 单入口index.php.实现框架控制器VC功能。
七、 实践:通过3天时间,完全实现第六步所讲的框架功能。正在应用此框架开发公司实际项目编程半月以上(团队几人在应用此框架编程)。结果:
1) 学习成本在20分钟左右,最多不超过1个小时。
2) 编程实现和TP3.2功能几乎一样,不过更代码简单(编写,维护,阅读)。
3) 继承类Controler中,大部分方法业务逻辑部分代码就几行。超过20行的非常少。由此可见,省略掉model层,根本没有增加controler层代码量。
4) 同样的程序速度相比TP3.2提升5倍以上性能。
在此抛砖引玉,希望高手不吝赐教。本人写此文的目的,就是希望有高手能指出其中的不足,而不是泛泛的说别人不懂程序。或者说是一种退步。本人各种编程语言经验几十万行。从业10来年,还在不断探索之中。
PHP高手交流千人qq群:317172514.想和作者交流,请加入此群共同探讨WEB编程。


IP属地:广东1楼2014-07-10 22:46回复