由於工作的原因,總是會在WPF和WebForm之間切換,但是實際項目中一直也沒有使用過asp.net MVC,畢竟現在的外企維護和兼容老系統,是一件必修課。
然而最近找工作發現外面的世界已經漫天的MVC,說沒用過都不好意思跟人打招呼,只能自己先了解了解,至少上手來用沒問題再去面試吧。
下了一遍什么7天系列,分塊系列的文章之后,發現其實asp.net MVC和WPF的MVVM思想如出一轍:
1.與傳統技術的對比
MVVM改變傳統的WinForm以事件為中心的方式,取而代之的是以數據為中心,將數據推送給View,通過雙向綁定實現數據的顯示和更新。
asp.net MVC改變了asp.net以內容為中心,每個頁面必須與物理的文件一對一邏輯相關的存在。MVC以應用邏輯為中心,地址欄的內容與控制器和方法相對應。
2.綁定方式
MVVM通過聲明的方式將ViewModel和View綁定起來,完全依靠尋找datacontext中的內容來顯示數據,靈活性高。asp.net MVC控制器與view的對應關系固定,view必須存放在controler命名的文件夾下,這樣雖然不需要手動綁定,但是靈活性差很多。因為BS結構的緣故,MVC提供了modelbinder自動幫助開發人員對應傳遞的參數,通過modelstate將各個參數的驗證信息存儲,同樣的,讓別人幫你干活,你就得聽別人的,參數名字什么的一致性,你就得保證好了。
3.路由方式
WPF畢竟還是窗體程序,很簡單的從控件樹依次往下傳遞事件。asp.net MVC通過地址請求的方式獲取響應,則必須要配置路由,這種配置路由的方式將路由的顯示與實際對應的controller分離,使地址展現更加靈活,當然也有局限性,如果路由中有指定地址的話,參數名稱必須與地址相同,畢竟是自動匹配,還是得按別人指定的規則來辦。(Controller/action/id)
4.其他
MVC中很多功能可以很方便的通過面向切面編程的方式實現,即ActionFilter。常用或者說肯定會使用到的包括日志,異常,字段驗證,權限認證等。極大的減少了代碼的重復量,簡化了邏輯也使得代碼結構清晰。
