>[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的理解。

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運行流程如下:

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,互聯網技術。同時可以掃描下面的二維碼關注我們,謝謝!
