>[danger]iWebshop商城是基于MVC架构进行开发的,使用MVC能够把业务逻辑、数据、界面显示分离出来,并且整个商城系统采用了单一入口,系统控制比较灵活。因此在了解iWebShop运行机制之前,我们先看看,什么是MVC,什么是单一入口。
## 一、MVC
> MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:
>
> * Model(模型)表示应用程序核心(比如数据库记录列表)
>
> * View(视图)显示数据(数据库记录)
>
> * Controller(控制器)处理输入(写入数据库记录)
>
> MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制
>
> Model(模型)是应用程序中用于处理应用程序数据逻辑的部分
> 通常模型对象负责在数据库中存取数据
>
> View(视图)是应用程序中处理数据显示的部分
> 通常视图是依据模型数据创建的
>
> Controller(控制器)是应用程序中处理用户交互的部分
> 通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据
>
> MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计,同时也让应用程序的测试更加容易
>
> MVC 分层同时也简化了分组开发,不同的开发人员可同时开发视图、控制器逻辑和业务逻辑
以上解释引用自百度知道,简单来说,使用MVC模式, 可以强制输入,处理,输出分开,把应用程序分为视图,控制器,模型三个部件,让它们各自处理自己的任务。这样的做法有利系统开发的分工及系统二次开发维护,提高开发人员的效率。因此,iWebShop系统的优势从架构时就已经建立下来了。
>[info]下面举例说明MVC模式的处理流程,加深对MVC的理解。
![](http://it.sunzoon.com/wp-content/uploads/2016/07/20160719161800.png)
1、用户在浏览器点击一个链接,向服务器发出一个请求,请求首先到“控制器”中去处理,“控制器”中的代码就开始进行业务逻辑判断。
2、“控制器”在做业务处理时,要对数据库进行存取,必须要通过“模型”对数据库进行访问。
3、模型数据返回到控制器中后,控制器继续进行逻辑处理,直至完成,控制器就做页面跳转指令,此时就要控制权交给视图,由视图对网页进行渲染,生成页面返回给用户。
## 二、单一入口
>[info] 单一入口通常是指一个项目或者应用具有一个统一(但并不一定是唯一)的入口文件,也就是说项目的所有功能操作都是通过这个入口文件进行的,并且往往入口文件是第一步被执行的。
这个比较好理解,就是系统所有的处理通过一个入口文件来运行。比如:iWebShop的根目录,index.php就是入口文件,结构如下:
~~~
<?php
//引入核心
$iweb = dirname(__FILE__)."/lib/iweb.php";
//引入配置文件
$config = dirname(__FILE__)."/config/config.php";
require($iweb);
//程序开始执行,生成WebApp
IWeb::createWebApp($config)->run();
?>
~~~
## 三、iWebShop运行机制
介绍完MVC,单一入口的概念,再来说明iWebShop运行机制,那就很好理解了,iWebShop的作者把MVC和单一入口的设计理念结合在一起,并根据自己多年开发商城系统的经验,加入了一些特性,形成了一个核心:iWebCore,IWebShop就是这个核心的基础上开发而来的。
IWebCore运行流程如下:
![](http://it.sunzoon.com/wp-content/uploads/2016/07/20160719171312.png)
1、请求到达统一入口文件,系统先做应用初始化的动作,此时会加载网站配置文件,初始化iWebCore的一些核心类。
2、读取用户的请求,之后URLManager会对URL进行分析,找到指定的控制器的一个Action运行程序。(URL的分析会在控制器的课程中说明)
3、控制器通过调用Model,执行完成之后跳转至视图,由视图完成数据渲染。
4、在视图的渲染过程中会调用Layout,标签等IwebCore的机制。这部分的内容在后续视图的课程中会有详细说明。
>[warning]如有不明白的地方,留言或是加入我们 “三众技术QQ交流群”一起讨论
## 关于我们
>[danger][三众科技](http://www.sunzoon.com)资讯平台——大道至简,悦你所阅!
>本教程由[三众简悦](http://it.sunzoon.com)原创,转载请注明出处,作者:bobball,由bobo整理成看云书籍
三众技术交流群:**543102562**
欢迎大家加入我们,共同讨论IT,互联网技术。同时可以扫描下面的二维码关注我们,谢谢!
![三众科技服务号](http://it.sunzoon.com/wp-content/uploads/2016/06/qrcode_for_gh_401d25b05314_344.jpg)