就個人感覺而言。ASP.NET MVC是一種非常反人類的設(shè)計。(我沒有接觸過Java的MVC,不知道兩者是否一樣。如果一樣,那么搞Java的同學(xué)也挺可憐。)尤其是MVC的路由機(jī)制,灰?;页7磩印B酚伤鶐淼摹懊烙^的”URL,通過合理的文件層次布局+URL重寫機(jī)制同樣可以解決。但顯然文件目錄結(jié)構(gòu)的方式,更直觀明了,貼近人們的自然思路??上Р还芪覀?nèi)绾瓮虏郏_蒂亞?納德拉估計是不會聽的。
MVC的默認(rèn)組織機(jī)構(gòu)是扁平的。所有的Controller都是平級的。在大型項目中,這完全是一個災(zāi)難。當(dāng)需要上百個甚至數(shù)百個Controller,或是為了讓代碼“自說明”時(指合理的給方法、文件命名,使閱讀者在沒有注釋的時候也能直接讀懂開發(fā)者的意圖),很多Controller需要同名時,尤其讓人崩潰。路是死的,人是活的。為了解決這一問題,聰明的程序猿想出了很多辦法。比如利用Area機(jī)制、重寫視圖匹配機(jī)制、重寫MVC框架等等。我們的OA系統(tǒng)中也有近百個Controller,不提前規(guī)劃好路由,后續(xù)的工作我們就無法展開。所以,在這一節(jié),我們就來聊聊其中兩種不對MVC做大手術(shù)的方式。
(僅僅一個小功能模塊就需要10多個Controller,在大型項目中,甚至需要數(shù)百個Controller,對項目管理而言,如不進(jìn)行合理劃分、管理,而按照mvc默認(rèn)的平級存放,無疑會帶來災(zāi)難性的后果。注:本圖已對功能模塊進(jìn)行按目錄劃分)
MVC大型項目常見組織方式1——重寫視圖匹配機(jī)制,實現(xiàn)MVC多級目錄
該方式的核心要點是:根據(jù)功能劃分,對Controller和View進(jìn)行多級目錄處理(如上圖)。然后通過路由優(yōu)先級和重載MVC自帶的視圖匹配邏輯的方式,達(dá)到精確控制URL與Controller、Views進(jìn)行匹配。進(jìn)行這是最接近自然思維的處理方式,合理而精細(xì)的安排路由優(yōu)先級的情況下,可以做到非常深的目錄層次。在我們的示例項目中,也將采用這種辦法。
- 根據(jù)功能劃分,對Controller和View進(jìn)行多級目錄劃分。
- 注冊路由列表,通過優(yōu)先級的方式,將路由和Controller一一對應(yīng)。
- 重載MVC視圖匹配邏輯,將View和Controller一一對應(yīng)。