[isTMS]課程 - 團隊開發與架構設計實戰
 
軟體開發的架構與設計模式
軟體架構師
常用的設計模式 - DI
常用的設計模式 - AOP
關於測試與可測試性
實踐系統的可擴展性
系統的身分驗證與安全性
關於微服務
雲端架構
架構的推動與框架的使用
dotnet 的專案與項目範本
開發者體驗(DX)
補充資料 與 參考

分層的意義

一般討論的系統分層有兩種,分別是 Layer(層)與 Tier(層)。

"Layer"(層)通常指系統中邏輯上的功能分類,比如說常見的四層架構:展示層(Presentation Layer)、業務邏輯層(Business Logic Layer)、資料存取層(Data Access Layer)和資料庫層(Database Layer)等。每一層都有其特定的職責功能,並通過明確的介面和協議來與其他層進行互動,以實現系統的整體功能。

"Tier"(層級)則是指系統中實際的部署架構,通常以物理或者邏輯上的隔離為基礎進行切分,比如說常見的三層架構:用戶界面層(User Interface Tier)、應用程序層(Application Tier)和數據存儲層(Data Storage Tier)等。每一層都運行在獨立的環境中,有自己的計算和儲存資源,並透過特定的通信協議和介面來實踐系統的整體功能。

簡單來說,"Layer"是一種邏輯分類方式,強調功能分類和職責分離;"Tier"是一種物理或者邏輯部署方式,強調隔離和拆分。

資訊系統的分層有何好處?

  1. 結構清晰:系統分層可以使系統的架構更加清晰明了,每一層都有其特定的職責和功能,並且層與層之間的依賴關係明確,便於理解和設計、分工。
  2. 降低耦合度(減少相依性):系統分層可以減少各層之間的相互依賴和耦合,每一層都有自己的職責和功能,可以獨立設計開發,降低系統維護成本,也方便模組化開發和重用。
  3. 易於擴展:系統分層可以使系統擴展(Extend)更加容易,每一層都有自己的職責和功能,可以在維持自身相容性的狀況下,根據需求進行擴展或調整,而不影響其他層的運行。
  4. 易於維護:系統分層可以使系統的維護更加容易,每一層都可以獨立進行維護和升級,而不影響其他層的運行。
  5. 可測試性:系統分層可以使系統的測試更加容易,每一層都有自己的職責和功能,可以獨立進行單元測試和整合測試,提高系統的可靠性和穩定性。

總的來說,系統分層可以使系統的設計、開發、擴展和維護更加容易和高效,提高系統的可靠性和穩定性,降低開發和維護成本。

資訊系統的分層有何缺點?

  1. 增加間接性:系統分層會增加層與層之間的傳輸和資料傳輸與轉換過程(序列化、反序列化),從而增加系統的間接性,可能會影響系統的效能和性能。
  2. 過度設計:系統分層可能會導致過度設計過度抽象化,增加系統的複雜性、開發難度、和不必要的通訊,需要更多的時間和精力進行系統設計和開發。
  3. 系統重量增加:系統分層可能會增加系統的重量和體積,對系統的運行和儲存產生影響,可能導致需要更大的硬體資源和成本。
  4. 錯誤傳遞風險:系統分層可能會增加系統錯誤傳遞的風險,層與層之間的傳輸和轉換可能會導致數據的不一致和錯誤,需要更多的測試和驗證。

總的來說,所謂的分層,有Tier和Layer兩種,Tier之間一定有通訊,Layer之間則一定會有不同的主要職責。 系統分層需要根據具體的系統設計和需求來進行適當的分層,避免過度設計和抽象化,降低系統的間接性和風險,提高系統的效能和性能。