發(fā)表下不成熟的看法,
網(wǎng)上轉(zhuǎn)載量非常高的一篇博客,在說三層架構(gòu)和MVC的時候, 有一句話是這樣說的,“中國社會制度與美國人生活方式有什么區(qū)別” 好多人說這個比喻好,個人感覺這個比喻很不太恰當(dāng) 首先說三層架構(gòu): UI(.aspx)---------> BLL(業(yè)務(wù)處理)------> DAL(數(shù)據(jù)處理)----> 永久存儲(數(shù)據(jù)庫) MVC: MVC(Model View Controller)模型-視圖-控制器 很明顯都是從整體上“策劃”一個web項目的實現(xiàn)邏輯 共同點:三層架構(gòu)的UI層相當(dāng)于MVC中的View層,作為視圖,再說白一點,都是頁面 區(qū)別:BLL+DAL相當(dāng)于MVC中的Model層, Model層實現(xiàn)系統(tǒng)中的業(yè)務(wù)邏輯,當(dāng)然也包含了數(shù)據(jù)訪問的邏輯 三層”中典型的Model層是已實體類構(gòu)成的,而MVC里,Model則是由業(yè)務(wù)邏輯與訪問數(shù)據(jù)組成的, Model層又分為不同的層(個人認(rèn)為就是三層架構(gòu)的DAL+BLL),它的分層也是為了結(jié)構(gòu)清晰和低耦合, 區(qū)別比較大的就是三層架構(gòu)中沒有Control層,而是由單個頁面上的控件的事件處理頁面與業(yè)務(wù)邏輯之間 ,而MVC中control層是作為聯(lián)系視圖層和Model的紐帶,使得整個項目的結(jié)構(gòu)更加清晰,降低了耦合性。 舉例說明這兩種方法不同的實現(xiàn)思路:A在上海的浦東區(qū)逛街,有人要搶劫他,打110報警了,B在閔行區(qū)也被劫持,他也打110報警了,他們打110的時候,接電話的是上海市公安局總部指揮中心,對于A,來解救他是浦東分局的警察,對于B,解救他的是閔行分局的警察,對于AB來說,他們不需要關(guān)心到底是誰來解救他的,他們只管打110報警(類似于頁面數(shù)據(jù)由action提交到控制器),由110指揮中心確定他的位置然后派出具體的地方警局去營救(控制器根據(jù)需求調(diào)用model層去完成對應(yīng)的數(shù)據(jù)處理)。而三層架構(gòu)在這個過程中就像A或B被劫持了,他們直接找到當(dāng)?shù)鼐ㄕ{(diào)用BLL層方法)的警察來處理, 不想拿出一堆大概念嚇人,本來就不太難理解的東西,別搞的很神奇, 也不是說哪個好那個不好,都是解決問題的不同實現(xiàn)思路,三層架構(gòu)和MVC并 沒有傳說中的那樣沒有任何關(guān)系,至于.net的MVC還沒有研究過。 這些東西都是源于接手的破項目,不太規(guī)范的架構(gòu)和編碼看的我很難受,不管MVC還是三層架構(gòu), 只要嚴(yán)格遵循起來,系統(tǒng)的擴展性和課維護性都不會很差。 其抱怨人家留下來的系統(tǒng)爛,其實自己的也好不到那去,只不過是自己寫的自己思路上清楚點而已。所以感覺以后要嚴(yán)格要求自己,爭取寫出的代碼清晰一點,規(guī)范一點。 |
|
來自: orion360doc > 《觀點》