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