JavaWeb三层架构的理解/三层架构的优缺点/三层架构与MVC的区别
1、三層架構
我們的開發架構一般都是基于兩種形式,一種是C/S架構,也就是客戶端/服務器,另一種是B/S架構,也就是瀏覽器服務器。在JavaEE開發中,幾乎全都是基于B/S架構的開發。那么在B/S架構中,系統標準的三層架構從上至下分別包括:表現層、業務層、持久層。區分層次的目的即為了“高內聚低耦合”的思想。在軟件體系架構設計中,分層式結構是最常見,也是最重要的一種結構。三層架構在我們的實際開發中使用的非常多。
三層架構中,每一層各司其職,接下來我們就說說每層都負責哪些方面:
- 表現層:
- 表現層也稱為界面層,位于最外層(最上層),離用戶最近。也就是我們常說的web層。
- 它負責接收客戶端請求,向客戶端響應結果,通常客戶端使用http協議請求web層,web需要接收http請求,完成http響應。
- 表現層包括展示層和控制層:控制層負責接收請求,展示層負責結果的展示。
- 表現層依賴業務層,接收到客戶端請求一般會調用業務層進行業務處理,并將處理結果響應給客戶端。
- 表現層的設計一般都使用MVC模型。(MVC是表現層的設計模型,和其他層沒有關系)
- 業務層:
- 也就是我們常說的 service層。它負責業務邏輯處理(主要是從數據庫中得到數據然后對數據進行邏輯處理),和我們開發項目的需求息息相關。
- web層依賴業務層,但是業務層不依賴web層。
- 業務層在業務處理時可能會依賴持久層,如果要對數據持久化需要保證事務一致性。(也就是我們說的,事務應該放到業務層來控制)
- 業務層在體系架構中的位置很關鍵,它處于數據訪問層與表示層中間,起到了數據交換中承上啟下的作用。由于層是一種弱耦合結構,層與層之間的依賴是向下的,底層對于上層而言是“無知”的,改變上層的設計對于其調用的底層而言沒有任何影響。如果在分層設計時,遵循了面向接口設計的思想,那么這種向下的依賴也應該是一種弱依賴關系。業務層的設計對于一個支持可擴展的架構尤為關鍵,因為它扮演了兩個不同的角色。對于數據訪問層而言,它是調用者;對于表示層而言,它卻是被調用者。依賴與被依賴的關系都糾結在業務層上,如何實現依賴關系的解耦,則是除了實現業務邏輯之外留給設計師的任務。
- 持久層:
- 也就是我們是常說的dao層。負責數據持久化,包括數據層即數據庫和數據訪問層,數據庫是對數據進行持久化的載體,數據訪問層是業務層和持久層交互的接口,業務層需要通過數據訪問層將數據持久化到數據庫中。通俗的講,持久層就是和數據庫交互,對數據庫表進行增刪改查的。
- 采用DAO模式,建立實體類和數據庫表映射(ORM映射)
在三層中JSP與Servlet代碼都屬于表現層,業務邏輯層則是完成業務規則的實體類,數據訪問層則是JDBC等代碼。
2、三層架構的優缺點
優點:
- 開發人員可以只關注整個結構中的其中某一層;
- 可以很容易地用新的實現來替換原有層次的實現;
- 可以降低層與層之間的依賴;
- 有利于標準化;
- 利于各層邏輯的復用。
- 結構更加的明確
- 在后期維護的時候,極大地降低了維護成本和維護時間
三層架構把不同層的業務職責分離得更加徹底,邏輯層不包含一丁點的視圖層代碼,同樣的數據層也不應該包含一丁點的邏輯層代碼,符合低耦合的思想。
三層架構更好地實現了模塊化編程,使用三層架構設計的系統更容易擴展、更換,特別是如今不止pc端一種設備,如果沒做好分層就無法適應多設備的訪問。例如表示層我們使用jsp+Servlet做的,面向的是web,如果哪天不做web了,要把整個表示層更換成桌面的圖形化來顯示,那么使用了三層架構的話,只需要更換表示層即可,業務邏輯層和數據層都可以進行復用。如果沒有進行分層的話,各個模塊都耦合在一起就無法進行復用,只能重新再編寫一個適應桌面的系統出來,這樣就很耗時耗力了。
我們都知道WebService是一種跨編程語言和跨操作系統平臺的遠程調用技術,如果一個系統是使用三層架構進行設計的,那么邏輯層就可以通過WebService共享給其他不同語言編寫的應用程序調用。
缺點:
- 降低了系統的性能。這是不言而喻的。如果不采用分層式結構,很多業務可以直接造訪數據庫,以此獲取相應的數據,如今卻必須通過中間層來完成。
- 有時會導致級聯的修改。這種修改尤其體現在自上而下的方向。如果在表示層中需要增加一個功能,為保證其設計符合分層式結構,可能需要在相應的業務邏輯層和數據訪問層中都增加相應的代碼。
3、三層架構與MVC的區別
-
很多人容易把三層架構與MVC模式混淆,三層與MVC的最不同的地方在于三層是沒有Controller控制器的概念。雖然同樣是架構級別的,三層與MVC 相同的地方在于他們都有一個表現層,但是他們不同的地方在于其他的兩個層。MVC沒有把業務的邏輯訪問看成兩個層,這是采用三層架構或MVC搭建程序最主要的區別。當然了,在三層中也提到了Model概念,但是三層架構中Model的概念與MVC中Model的概念是不一樣的,“三層” 中典型的Model層是以實體類構成的,而MVC里,則是由業務邏輯與訪問數據組成的。
-
三層是基于業務邏輯來分的;而MVC是基于頁面來分的。
三層是種軟件架構,通過接口實現編程;MVC模式是一種復合設計模式,一種解決方案。
三層模式是體系結構模式;MVC是設計模式。
三層模式又可歸于部署模式;MVC可歸于表示模式。
總結
以上是生活随笔為你收集整理的JavaWeb三层架构的理解/三层架构的优缺点/三层架构与MVC的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android ADB 冷结切换默认桌面
- 下一篇: 图种制作器单文件版V1.0下载 | 含图