[架構] 多層式架構(Multi-layer Architecture)
中文多層架構的層可翻作 layer 或 tier,兩者主要的差別在於 layer 指程式邏輯在應用程式的位置;而 tier 指 layer 在系統上實際部屬執行的位址,屬於物理層級的指涉。這一篇的層說的是 layer,談如何在軟體層面利用分層 (layer) 妥善安排程式碼,以 multi-layer 撰寫程式碼能將複雜的邏輯隔離開達成關注點分離(SoC, Separation of concerns),好處有:
降低耦合:程式拆成各司其職的單元,降低彼此耦合,增加程式單元彈性(擴展性)、複用性。 易於維護:多層式架構中程式碼各司其職,容易定位問題發生點、而非從整個應用程式邏輯找。 敏捷開發:程式可快速回應需求修改(理由與易於維護類似,但是在開發時獲得的好處)。 平行開發:解耦的程式有助於降低協作併版衝突。 分層 三層式架構 一般來說最常用的三層式架構組成為:
表現層 (PL; Presentation Layer):ASP 內就是 Controller 結尾。 商業邏輯繩 (BLL; Business Logic Layer):又稱為 Service Layer,命名習慣是 Service、Helper 結尾。 資料存取層(DAL; Data Access Layer):命名習慣是 Repo 結尾。 另外有人將 Domain、Common 稱為一層,但這個部分其實不太像層,因為會被每一層引用,在架構上呈現比較不像層那樣扁平,裡面包含: Model、Entity、DTO(Data transfer object) 或 Value Object,這裡只有屬性沒有方法。
四層式架構 為了降低 PL 與 BL 之間的耦合,有時會在 Business Logic Layer(BLL) 上再疊一層 Service Layer(SL),作為 Presentation Layer 與 Business Layer 的中介層,這時 Business Logic Layer 的命名就不以 Serviece 結尾,通常較大型專案才需要如此分法。