轉至: http://www.cnblogs.com/zhhh/archive/2011/06/10/2077519.html
又看到有人在問三層架構和MVC的關係,感覺這種問題有點教條化了。因爲它們都在邏輯上將應用程序劃爲三塊,湊了一個數字3,就有人非要把它們聯繫到一起了。
這兩個東西我接觸有幾年了,有一點體會,表達一下:
三層是三層,MVC是MVC,它們毫無關係的。
三層是從整個應用程序架構的角度來分的三層(如果程序需要,還可以分多層)。
三層是爲了解決整個應用程序中各個業務操作過程中不同階段的代碼封裝的問題,爲了使程序員更加專注的處理某階段的業務邏輯。
比如將數據庫操作代碼封裝到一層中,提供一些方法根據參數直接返回用戶需要的相應數據,這樣在處理具體的業務邏輯的時候,就不用關心數據的存儲問題了。
MVC是在應用程序(BS結構)的視圖層劃分出來的不同功能的幾個模塊。
MVC主要是爲了解決應用程序用戶界面的樣式替換問題,把展示數據的 HTML 頁面儘可能的和業務代碼分離。MVC把純淨的界面展示邏輯(用戶界面)獨立到一些文件中(Views),把一些和用戶交互的程序邏輯(Controller)單獨放在一些文件中,在 Views 和 Controller 中傳遞數據使用一些專門封裝數據的實體對象,這些對象,統稱爲Models。
只所以說MVC和三層毫無關係,是因爲它們二者使用範圍不同:三層可以應用於任何語言、任何技術的應用程序;而MVC只是爲了解決BS應用程序視圖層各部分的耦合關係。它們互不衝突,可以同時存在,也可根據情況使用其中一種。