MVCMVC 是軟件工程的一種軟件架構(gòu)模式,它不是具體的技術(shù),而是一種代碼分層的理念,主要體現(xiàn)了職責(zé)分離原則。 M-Model 模型 V-View 視圖 C-Controller 控制器 對(duì) MVC 的誤解及緣由誤解:頁(yè)面視圖 = View ,Entity 和 Dto = Model 緣由:因?yàn)閯側(cè)肟映绦騿T職業(yè)的時(shí)候,接觸的是 ASP.NET Web Form 項(xiàng)目,而 ASP.NET Web Form 對(duì)于 Controller 和 View 的職責(zé)并沒(méi)有很好的規(guī)劃和定義,所以自己就很粗暴的把頁(yè)面視圖認(rèn)為是 View 層。View 頁(yè)面散列在各個(gè) Controller 之下,雖竭力將文件夾命名清晰,但因?yàn)?Model 沒(méi)有很好的實(shí)現(xiàn),Dto亂飛,數(shù)據(jù)訪問(wèn)代碼在 Controller 隨處可見(jiàn),某些 Controller 文件中代碼堆積,各種邏輯全在 Controller 層。 嘗試優(yōu)化:將 View 歸置到一個(gè)文件夾之下,將 Entity 和 Dto 獨(dú)立類(lèi)庫(kù),分出數(shù)據(jù)訪問(wèn)層 DataAccess 和 業(yè)務(wù)邏輯層 Business ,通用方法層 Common 項(xiàng)目結(jié)構(gòu)大概是
不太完美的結(jié)果:優(yōu)化之后代碼結(jié)構(gòu)比之前的要清晰許多,Controller 放數(shù)據(jù)綁定代碼和對(duì)參數(shù)的XSS校驗(yàn)和Sql注入校驗(yàn)。但是新的問(wèn)題出現(xiàn),數(shù)據(jù)庫(kù)字段變動(dòng)或者業(yè)務(wù)調(diào)整,Model 層的改動(dòng)涉及到了 Entity、Dto、DataAccess、Business。在此不作 ASP.NET Web Form 和 ASP.NET MVC 的優(yōu)劣比對(duì)。 MVPMVP 是 MVC 模式的延伸,不是替代品。 P:Presenter
摘自 Model-view-presenter - 維基百科,自由的百科全書(shū) 在我看來(lái) Presenter 層應(yīng)該是被包含在 Business 層,因?yàn)橐?guī)劃時(shí)對(duì) Business 層的部分職責(zé)預(yù)想和上述引用完全一致。因?yàn)闆](méi)有更具體地規(guī)劃 Presenter ,所以后期項(xiàng)目中 Business 層和 Controller 層中參雜了本應(yīng)由 Presenter 層承擔(dān)的職責(zé)代碼,降低了項(xiàng)目的可維護(hù)性。 MVVM
ViewModel 作為中介者,屏蔽了數(shù)據(jù)綁定過(guò)程代碼和GUI代碼,借助 XMAL 標(biāo)記語(yǔ)言可以輕松完成復(fù)雜的 GUI 展示。WPF 的強(qiáng)大不用多說(shuō)。 在此推薦兩個(gè)按照 MVVM開(kāi)發(fā)模式的開(kāi)源項(xiàng)目 |
|
來(lái)自: Coder編程 > 《待分類(lèi)》