1. 程式人生 > >軟件三層架構和MVC模式的區別

軟件三層架構和MVC模式的區別

tro 不能 服務器端 輸出 com 業務層 架構 直接 事務

剛開始學習MVC模式的時候,很容易將兩個混為一談,覺得兩者一個是中文描述,一個是英文描述(哈哈,很奇怪當時的想法),當深入了解後,發現根本不是一回事啊,遂將兩者做一下總結:
1. 從概念上來說:
  三層架構是一個分層式的軟件體系架構設計,適用於任何一個項目。而MVC是一種設計模式,它是根據項目的具體需求來決定是否使用這個設計模式 。從一個項目開始,首先需要進行架構設計,一般采用分層式的架構設計,即三層架構。在確定了架構設計之後,會根據具體的需求去考慮是否需要應用設計模式,比如說MVC模式,抽象工廠模式等等。即項目的開發是先確定軟件的架構設計,再根據具體的需求決定是否使用相關設計模式,從這裏可以看出三層架構和MVC設計模式不是一個等級的。

2. 從劃分層次上說:
  ①三層架構將整個項目分為:
    表現層(UI):通俗講就是展現給用戶的界面,即用戶在使用一個系統的時候所看到的界面
    業務邏輯層(BLL):針對具體問題的操作,也可以說是對數據層的操作,對數據業務邏輯處理。
    數據訪問層(DAL):該層所做事務直接操作數據庫,針對數據的增添、刪除、修改、更新、查找等。
  ②MVC即Model(模型),View(視圖),Controller(控制)。

技術分享圖片技術分享圖片技術分享圖片

3.產生的背景:

①三層架構:所有應用程序都是用來處理數據的,程序的入口數據可以通過接口交互式輸入或者從磁盤等地方讀取,程序的輸出結果作為現實或存儲在磁盤上。上世紀九十年代之前,除了大型的系統外,應用程序讀取處理並存儲數據都是在一臺機器上進行的。但是,從九十年代起,由於數據的爆炸性增長,一臺機器上可以存儲的數據不能滿足應用程序的需求。於是,人們對原有程序進行了水平分層,將數據分離到數據庫服務器上,應用程序從網絡上讀取數據。這就是 2-tiers 架構,客戶端應用程序和數據庫服務器。這種架構依然存在一些缺點,例如,無法緩解支持很多應用程序的客戶端的負載; 客戶端越來越復雜; 客戶端和服務器之間頻繁的通信對帶寬要求高,限制了網絡的大小等。總的來說就是,由於原有業務的復雜度提升,客戶端和服務器端的職能需要調整,從而實現負載均衡,使系統具有良好的伸縮性。客戶端的應用程序用於展示,是展示層,業務層進行邏輯運算的支持,數據層存儲和操作數據。由於這種架構對原有程序進行了分層,不同的層運行在不同的機器上,所以可以非常自然地支持分布式開發。

②MVC設計模式:針對對用戶界面進行管理的程序的職責混亂導致代碼難以維護的情況,它將對數據的操作 M 與對視圖V的操作分離開,用C 邏輯作為二者的粘合劑。

參考文章:https://www.zhihu.com/question/21851341

軟件三層架構和MVC模式的區別