如果您是初次閱讀這個系列,請先去《Index & Writing Plan》查找並閱讀“架構設計系列”的前兩篇文章,順序閱讀會使您有更好的閱讀體驗
強烈推薦配合源代碼閱讀本文:點擊此處下載(可以直接運行,會在本地自動生成數據庫)
正文開始
上一篇我們寫完了Service,剩下Controller和View,但是這兩個都是沒什么可說的了:
Controller其實就是接收Service處理過的數據,並且呈現給頁面;因為業務邏輯已經在Service中處理過了,所以Controller無非就是將數據稍微修改一下,比如說日期的顯示方式,2012/11/15,還是2012-11-15
而View,也沒什么和構架相關的東西,一筆帶過
我這篇文章真正想寫的是我和我同事的討論
同事提出了一個想法:按照之前的架構,每個學校我都要去寫一套Controller與View,而其實這里面並不是所有頁面都有差異的。比如說TeacherList頁面,雖然不同的學校有不同的差異字段,但是List頁面不一定會將差異字段顯示出來。比如說現在A、B、C三所學校TeacherList要顯示的字段是一樣的,那么我還去寫3套Controller和View,是不是顯得很傻
根據分析老系統,大概有30%以上的頁面是沒有差異的
他也提出了他的構架圖,其中Controller和View是否相同的判斷可以通過.NET MVC強大的路由功能來精彩的實現,有興趣的同學可以自行搜索相關文章
這個構架的大體思路就是:什么不同,我就重寫什么;有且只在需要的時候重寫
看起來很美妙,整個構架相當精煉,沒有多余的地方,但是真的是無懈可擊的么?
以下是我和他的Skype的聊天記錄:
我:有3種層次:
1、業務邏輯不一樣,重寫Service
2、頁面邏輯不一樣,調整Controller
3、頁面不一樣,重寫頁面
可以這樣整理吧
他:我想的是這樣
但不知道實際開發時會不會搞亂。
我:我覺得還是弄簡單點好吧
我自己都覺得理解起來有些困難
他:不知道怎樣才能簡單。
route 重定位這里本來就比較復雜的。
調整Action 很容易搞亂。
我:我再想想
他:稍微多寫點東西,項目結構簡單。這樣應該好一點
我:是啊,簡單的往往是最好的
我聽說過一種說法,說是你把系統構架圖畫出來
如果系統構架圖漂亮,那么就是一個好系統
他:ACTION 配置多會比較麻煩
盡量少點像剛才的那種 VIEW 和Controller循環重定位的東西。
我:要不還是每個城市寫一套Controller和View算了
T4模板弄好的話,這個也挺快的
他:這個再想想,到時候去會議室討論吧。
是的,我們都認為這個構架的最大弱點在於復雜
連設計構架的人都會被弄得思維混亂,那么幾乎可以確定這個構架對於使用者來說,相當的不友好,雖然減少了代碼量,但是增加了邏輯負擔
最后我們討論的結構是:維持原有構架
因為權衡之后,覺得依靠T4模板,寫Controller和View並不是多重的負擔
就此,整個項目的構架都這樣定下來了,准備應用到生產環境中
就此擱筆
PS:VS212真心好用