其實,每個小小的程式設計師都有個毛病,就是反覆寫乙個東西會覺得這個東西沒有新意。
就像讓你寫三層,你卻還是覺得想寫mvc模式。
軟體小公司做b/s的大部分還是在用三層,大公司可能有自己產品的傳統行業的還是在用這個。
這時候你在想,三層這種模式我已經寫膩了,我想寫mvc。
三層和mvc不屬於同樣層面的東西,這只是對寫法的乙個概論而已。
mvc 和三層
拿webform的分離寫法來說
現在流行json互動
mvc 三層
view ui
controller 一般批處理頁 ashx+bll
model model+dal
db db
其實這樣對照你就不難發現
傳統如果你寫json分離的ajax寫法,你會在頁面的js中寫乙個請求get post的ajax 來對應乙個或多個 一般批處理頁面ashx 進行增刪該查
即ui 到處理程式ashx ashx一般會呼叫bll一些方法做一些處理再返回給ui
我們可以這樣表達
即 ui=>ashx=>bll
有沒有發現這個很像mvc的view和controller
即 view(ui)=>controller(bll+ashx)
其實json分離寫法你寫多了,其實你的ashx頁面一般返回就是乙個json陣列,其實也可以理解成乙個物件model
你的view檢視 返回的其實也是物件model
其實有些時候你可能覺得我說的不對,mvc的model應該是bll和dal,其實更多的時候控制器寫業務邏輯比較多,因為你的頁面的檢視模型viewmodel往往是不能對應上頁面上model模型的
mvc的model其實不能理解成三層的model,他也包括一些dal的操作在裡面,也可以寫bll邏輯
三層即 bll=>dal=>db
mvc即 model(bll+dal+db?)
model比較複雜
細說一下
mvc這樣理解也沒有太大的問題,但是你會發現,這樣還沒有三層好,耦合度實在是太高了
而且mvc view需要的元素往往是不能對應騎資料庫的元素的,我又不想在controller寫太多的業務邏輯
那麼我們在想是不是應該 讓頁面 和 model適配起來呢
於是誕生了viewmodel
viewmodel是一種典型介面卡模式
mvvm
view=>controller=>viewmodel=>model=>dal=>db
對應三層
ui=>ashx=>bll=>dal=>db
viewmodel主要是將資料庫的模型對映成我們能用的檢視模型
例如
//////使用者表
/// public
class
user
//////
使用者密碼
/// public
string password
//////
刪除使用者
/// ///
///public
bool deleteuser(string
username)
}
還有一張使用者資訊表userinfo
//////使用者表
/// public
class
userinfo
//////
使用者資訊表id
/// public
int userinfoid
//////
使用者姓名
/// public
string name
//////
使用者年齡
/// public
string age
//////
刪除使用者資訊
/// ///
///public
bool deleteuserinfo(int
id)
}
這時候乙個cshtml頁面問你要乙個 使用者的基本資料,你該怎麼辦,因為他只能返回乙個模型
其實你在想用乙個大的class包含這兩個就是了
答案就是
publicclass
userviewmodel
public userinfo userinfo
public
userviewmodel()
//////
刪除方法
/// ///
///public
bool delete(int
id)
}
這是不是很像資料庫檢視,多表,其實viewmodel大概也是這麼個意思
viewmodel 來和model做互動,model包含model(三層的)和dal(三層的),我們在mvc的資料夾下建立乙個dal來互動db
其實這就是所謂那種高階的mvvm模式
其實就是一種為了解決實際問題mvc的一種變種而已
mvvm 可以說viewmodel實際上為了解決view而出現的
三層架構理解
檢視文章 三層架構 2008 06 12 15 30 三層架構是 資料層,業務層,表示層。資料層從資料庫中取出 10。業務層按照一定的邏輯 這裡我們舉例取溫度的邏輯 翻譯成 10攝氏度。表示層顯現給使用者 哎呀,今天好冷!層就相當於乙個黑盒子,我們不用知道它內部怎麼實現,只需要知道如何去呼叫它就行了...
三層的再理解
三層的再理解 分層並不是說把你的 拆開成n類,如果只是簡單的分拆基本上沒什麼意義 分層實際上是為了物件設計。一般是先有物件在有 我們為什麼要物件,我們做物件的原因是我想在分析設計階段,只關心系統的物件,和物件間的互動和約束,而不關心介面是如何表現的,資料是如何入庫的。實際上當你把物件建完後,系統就自...
如何學習和理解三層架構
首先 學習任何知識都必須從基礎抓起。三層學習也是一樣,首先要了解基本的理論知識。所謂三層體系結構,是在 客戶端與資料庫之間加入了乙個 中間層 也叫元件層。這裡所說的三層體系,不是指物理上的三層,不是簡單地放置三颱機器就是三層體系結構,也不僅僅有 b s應用才是三層體系結構,三層是指邏輯上的三層,即使...