MVC MVVM和傳統三層的理解

2022-08-20 13:18:15 字數 2667 閱讀 9944

其實,每個小小的程式設計師都有個毛病,就是反覆寫乙個東西會覺得這個東西沒有新意。

就像讓你寫三層,你卻還是覺得想寫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包含這兩個就是了

答案就是

public

class

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應用才是三層體系結構,三層是指邏輯上的三層,即使...