2012年12月31日 星期一

MVC Request 的奇幻漂流 末日餘生 MVC 跨年修練計畫 第二彈

在第一彈裡面 我仗著 VS 的威能 三兩下的搞定了 基本五VIEW

而我只是很快樂的截了一堆圖 根本沒寫什麼 CODE

這回要慢慢來欣賞 MVC 中 Request 的奇幻漂流

在這之前 我們先來看看 Controller 中的 奧秘

Controller 是整個 ASP.NET MVC 的交通樞紐

負責接收前端發送過來的 HTTP Request (GET 或 POST) 然後交給 Model 處理 處理完之後再決定返回哪個 Action

如果是 WinForm 中毒很深的末期患者 一開始可能 完全不知道 GET 跟 POST 到底啥是啥 啥要幹啥 啥又是啥 啥要是要幹啥

請遺忘微軟的大騙局 「postback」 這個東東吧

真相是...

表單 form method = post 的時候 submit表單 會走 POST 它會加密資料

其他時候 "幾乎" 都走 GET 它不會加密資料



基於秘密口訣:Model要肥、Controller要飄逸、View要蠢

Controller 請盡量只讓它作 接受跟回應 其他複雜的邏輯請交給 Model

但是我們看看 VS 自動幫我們產生的 Controller 雖然五臟俱全 但是把 DB Access 也混在其中了

碰巧 DB Access 的操作都很簡單 所以給人一種 放這在這邊寫好像很 OK

但是這種做法不可取 跟當初 WinForm 一個 Click 事件環遊宇宙幾千行一樣 義大利麵式的寫法 不可接受啊啊啊~

抽層絕對是降低效能的 但是那怕是犧牲效能 也要極盡所能的提升可維護性!

血輪眼的各位一定有發現 Details、Edit跟Delete的 GET Action 根本是一模一樣的重複程式碼 重複代碼不可接受啊啊啊~

一陣攪和之後 Controller 被大改造

只剩下單純的 參數傳遞 跟 決定回應的 Action

個人喜好 GET 放一邊 POST 放一邊 並且抽掉重複 CODE

現在依靠 CriminalHelper 類別 進行 DB Access



日後要增加查詢就改 CriminalHelper ,要改顯示內容就改 View , Controller 感覺上應該改變不大

另外 MVC 之所以可以這樣很神奇的 穿越來穿越去 是因為強大的 model binding 機制存在

這又是另一段 偉大的 奇幻之旅了

沒有留言:

張貼留言