基於.Net 三層詳解

  • 2019 年 12 月 4 日
  • 筆記

三層的了解一直都有,最近在項目結構上遇到了一些問題,遂將三層/多層的結構詳解做一下整理和分析。

架構/模式/框架

首先說下什麼是三層架構,在解釋三層架構之前,應該先分清楚架構模式框架的區別。

其他的開發平台不清楚,在.NET 平台,很多人把 MVC 和 三層混為一談,MVC 和 ASP.NET MVC也混作一團。這就是對這幾個概念混淆不清,下面逐一說說。

架構

說到架構這個詞,我們首先想到的是架構師,這個作為底層碼農心心念念想要達到的職位,那麼什麼是架構呢?架構一般是正對整個系統的,而並非針對某個單獨的問題。

軟件架構(software architecture)是一系列相關的抽象模式,用於指導大型軟件系統各個方面的設計。 軟件架構是一個系統的草圖

正是因為架構的這些特性,因此架構是沒有語言和平台限制的,通用的,普適的設計規劃。

模式

軟件開發中遇到某些特定的問題,而由此總結出來的固有的普適的經驗,解決方法,就是模式。例如我們常說的 GOF 23 種設計模式 ,MVC 模式, MVP模式等等。

GOF 23

諸如常見的工廠模式,單例模式,原型模式,適配器模式等等……

計劃整理一遍23種模式的原型代碼,暫時可以參考 TerryLee -.NET設計模式系列文章

MVC/MVP

MVC/MVP 則極為常見,也就是我們常說的,模型,視圖,控制器。

而 MVP與MVC有着一個重大的區別:在MVP中View並不直接使用Model,它們之間的通信是通過Presenter (MVC中的Controller)來進行的,所有的交互都發生在Presenter內部,而在MVC中View會直接從Model中讀取數據而不是通過 Controller。

框架

那麼什麼是框架呢?框架是架構設計,模式的具體體現。

比如:

  • ASP.NET MVC 就是一個基於MVC 設計模式的WEB 服務開發框架。
  • VUE 是一個基於 MVVM設計模式的漸進式前端開發框架。

這就是框架的定義。

三層(多層)架構

三層架構,實際上是多層架構的一種,我們通常將其約定為三層,即 :

  • UI Layer 界面層
  • Business Logical Layer 業務邏輯層
  • Data Access Layer 數據訪問層

當然,通常情況下,使用對象關係映射 ORM ,也會添加一個 Entity 實體層或 Model 模型層。

那麼如此分層的意義是什麼呢?

功能明細化,每一層負責各自職責,這樣在出現問題時,可以輕鬆排查出問題出現在哪一層,從而快速做出響應。同時,一定程度的降低了代碼的耦合度,從而提升復用率,某種層度上來說,可以提升開發效率。另一方面,也利於團隊開發,劃分功能模塊,各自按規範開發,完成單元測試。

三層間的交互

三層之間各自關聯,又相互獨立。

UI 層只和 BLL 業務邏輯層 交互,由UI 層獲取用戶輸入和請求,經由BLL 處理, BLL 處理後調用 DAL 與數據庫交互,DAL 只和 BLL 與數據庫交互,並將處理的結果按需返還給 BLL ,BLL 將內容處理後經 UI 層展示給用戶,即完成三層交互。