三層架構是乙個分層式的軟體體系架構設計,它可適用於任何乙個專案。
mvc是乙個設計模式,它是根據專案的具體需求來決定是否適用於該專案。
那麼架構跟設計模式有什麼區別呢?
我們從接手乙個專案開始,首先,我們需要進行架構設計,一般我們採用的就是分層式的架構設計,即我們的三層架構。
然後,在確定了架構以後,我們再根據專案的具體需求去考慮是否需要應用一些設計模式,比如是否應用我們的mvc模式,抽象工廠模式等等。(在這裡我們看出,mvc與三層架構不是乙個等級的,而與抽象工廠等設計模式才是一路的)
最後,確定了模式以後,就是我們的一些具體的實現了。(當然乙個專案不僅僅考慮這些問題,我只是為了說明兩者的區別,將其他問題已省略)
三層架構將整個專案劃分為:表現層(ui)、業務邏輯層(bll)、資料訪問層(dal)。
mvc 即model(模型),view(檢視),controller(控制)。
下面看一下他倆的區別與聯絡:
通過這個圖我們可以知道,我們平常所說的v是ui,c是bll,m是dal的觀點是錯誤的。
而我們通常所見到的mvc一般也都是在應用三層架構的基礎上,即將model層再進行分層。而如果model不再進行劃分的話,那麼使用mvc的意義也就不大了。
三層架構的目的著重點是「高內聚,低耦合」,即解耦。
mvc的目的則是實現web系統的職能分工,即職責劃分。
其實職責劃分也是解耦,但是三層側重的是整體的乙個解耦,而mvc側重的是web系統的解耦,即側重jsp和servlet的乙個解耦。
既然兩者有這麼多的不同,我們為什麼還總是將其混淆呢,下面我列舉了幾個我們常常將其混為一談的幾個原因:
1.二者都是「三層」。
這個原因是最容易迷惑我們初學者的,乙個是ui,bll,dal,乙個是view,controller,model,不都是三層嗎?
雖然都是「三層」(不一定是真的三層,還可以是多層),但是它們的劃分的不一樣。大家可從上面的圖中看出不同。
2.mvc總是伴隨著三層架構。
這個就是我在前面一再強調的,我們一般是在考慮使用(也可以不使用)了三層架構的基礎上再根據具體需求決定是否需要使用mvc,於是我們常說的mvc中總是伴隨著三層架構,所以大家總是會認為mvc就是三層架構,三層架構就是mvc,殊不知,它們二者是一起出現的。
3.都是在分層,即都是在解耦。
前面說它們目的的時候也說了,雖然它們的側重點不同,但是它們的總體目的是一樣的,都是為了解耦,對於初學者而言,是不知道這兩個側重點有何不同的。
大家往往對它們的聯絡知道很多,不然也不會混為一談,但是對它們的區別卻知道較少,希望我上面講解的它們兩者之間的區別可以讓大家對它們有些了解,如有寫的不妥的地方,請指教。
mvc 的優點:
1. 通過把專案分成model view和controller,使得複雜專案更加容易維護。
2. 沒有使用view state和伺服器表單控制項,可以更方便的控制應用程式的行為
3. 應用程式通過controller來控制程式請求,可以提供豐富的url重寫。
4. 對單元測試的支援更加出色
5. 在團隊開發模式下表現更出眾
web窗體的優點
1. 採用事件驅動模式來控制應用程式請求,由大量伺服器控制項支援
2. 採用頁面控制機制,可以為單個頁面新增事件處理函式。
3. 使用view state和伺服器端頁面,使管理頁面狀態資訊更加輕鬆。
4. 對人數較少的想使用伺服器端控制項的開發團隊,使用起來更加方便。
5. 開發起來比mvc模式要輕鬆簡單一些。
mvc 框架特色
1. 分離任務(輸入邏輯,業務邏輯和顯示邏輯),易測性和預設的測試驅動元件。所有mvc用到的元件都是基於介面並且可以被mock物件測試到,你可以不必在asp.net程序中執行controller就可以使用測試。使得測試更加快速和簡捷。
2. 可擴充套件的簡便的框架。mvc框架被設計用來更輕鬆的移植和定製功能。你可以加入自己的檢視引擎,url重寫策略。過載action方法等。mvc也支援dependency injection(di) and inversion of control(ioc)
3. 強大的url重寫機制讓你更方便的建立容易理解和可搜尋的url。url可以不包含任何副檔名,並且可以重寫url使其對搜尋引擎更加友好。
4. 可以使用asp.net現有的頁面標記、使用者控制項、模板頁。你可以使用巢狀模板頁,嵌入表示式,宣告伺服器控制項、模板,資料繫結、定位等等。
5. 對現有的asp.net程式的支援,mvc讓你可以使用如窗體認證和windows認證、url認證、組管理和規則、輸出、資料快取、session、profile 、health monitoring、配置管理系統、provider architecture特性。
MVC與三層架構區別
本文 趙丹丹的專欄 三層架構與mvc謎團之答案揭曉 我們平時總是將三層架構與mvc混為一談,殊不知它倆並不是乙個概念。下面我來為大家揭曉我所知道的一些真相。首先,它倆根本不是乙個概念。三層架構是乙個分層式的軟體體系架構設計,它可適用於任何乙個專案。mvc是乙個設計模式,它是根據專案的具體需求來決定是...
MVC與三層架構區別
三層架構是乙個分層式的軟體體系架構設計,它可適用於任何乙個專案。mvc是乙個設計模式,它是根據專案的具體需求來決定是否適用於該專案。那麼架構跟設計模式有什麼區別呢?我們從接手乙個專案開始,首先,我們需要進行架構設計,一般我們採用的就是分層式的架構設計,即我們的三層架構。然後,在確定了架構以後,我們再...
MVC與三層架構區別
我們平時總是將三層架構與mvc混為一談,殊不知它倆並不是乙個概念。下面我來為大家揭曉我所知道的一些真相。首先,它倆根本不是乙個概念。三層架構是乙個分層式的軟體體系架構設計,它可適用於任何乙個專案。mvc是乙個設計模式,它是根據專案的具體需求來決定是否適用於該專案。那麼架構跟設計模式有什麼區別呢?我們...