三層架構(3-tier application) 一般意義上的三層架構就是將整個業務應用劃分爲:表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL)。區分層次的目的即爲了「高內聚,低耦合」的思想。web
一、表現層(UI):通俗講就是展示給用戶的界面,即用戶在使用一個系統的時候他的所見所得。 數據庫
二、業務邏輯層(BLL):針對具體問題的操做,也能夠說是對數據層的操做,對數據業務邏輯處理。 設計模式
三、數據訪問層(DAL):該層所作事務直接操做數據庫,針對數據的增添、刪除、修改、更新、查找等。 架構
表現層實現的表明做品是Struts框架,業務層實現的表明做品是Spring,持久層實現的表明做品是Hibernate。 mvc
舉個例子:app
持久層從持久庫中取出-10。框架
業務層按照必定的邏輯(這裏咱們舉例取溫度的邏輯)翻譯成-10攝氏度。dom
表示層顯現給用戶「哎呀,今天好冷!」。spa
層就至關於一個黑盒子,咱們不用知道它內部怎麼實現,只須要知道如何去調用它就好了。每層只與上下相鄰的兩層打交道。當一層內部因爲技術變遷發生變化時,只要接口不變,其餘層不用作任何改變。分層以後靈活性提升,也便於團隊分工開發。翻譯
Model(模型):數據模型,提供要展現的數據,所以包含數據和行爲,能夠認爲是領域模型(domain)或JavaBean組件(包含數據和行爲),不過如今通常都分離開來:Value Object(數據) 和 服務層(行爲)。也就是模型提供了模型數據查詢和模型數據的狀態更新等功能,包括數據和業務。
View(視圖):負責進行模型的展現,通常就是咱們見到的用戶界面,客戶想看到的東西。
Controller(控制器):接收用戶請求,委託給模型進行處理(狀態改變),處理完畢後把返回的模型數據返回給視圖,由視圖負責展現。 也就是說控制器作了個調度員的工做。
從圖中咱們還看到,在標準的MVC中模型能主動推數據給視圖進行更新(觀察者設計模式,在模型上註冊視圖,當模型更新時自動更新視圖),但在Web開發中模型是沒法主動推給視圖(沒法主動更新用戶界面),由於在Web開發是請求-響應模型。
Web MVC中的M(模型)-V(視圖)-C(控制器)概念和標準MVC概念同樣,咱們再看一下Web MVC標準架構,以下圖所示:
在Web MVC模式下,模型沒法主動推數據給視圖,若是用戶想要視圖更新,須要再發送一次請求(即請求-響應模型)。
M:(Model) 模型 : 應用程序的核心功能,管理這個模塊中用的數據和值;
V(View )視圖: 視圖提供模型的展現,管理模型如何顯示給用戶,它是應用程序的外觀;
C(Controller)控制器: 對用戶的輸入作出反應,管理用戶和視圖的交互,是鏈接模型和視圖的樞紐。
MVC用於將web(UI)層進行職責解耦
MVC是 Model-View-Controller,嚴格說這三個加起來之後纔是三層架構中的UI層,也就是說,MVC把三層架構中的UI層再度進行了分化,分紅了控制器、視圖、實體三個部分,控制器完成頁面邏輯,經過實體來與界面層完成通話;而C層直接與三層中的BLL進行對話。
MVC能夠是三層中的一個表現層框架,屬於表現層。三層和mvc能夠共存。
三層是基於業務邏輯來分的,而MVC是基於頁面來分的。
MVC主要用於表現層,3層主要用於體系架構,3層通常是表現層、中間層、數據層,其中表現層又能夠分紅M、V、C,(Model View Controller)模型-視圖-控制器
MVC是表現模式(Presentation Pattern)
三層架構是典型的架構模式(Architecture Pattern)
三層架構的分層模式是典型的上下關係,上層依賴於下層。但MVC做爲表現模式是不存在上下關係的,而是相互協做關係。即便將MVC看成架構模式,也不是分層模式。MVC和三層架構基本沒有可比性,是應用於不一樣領域的技術。