Spring MVC 應用架構經典之路

2021-08-19 23:21:06 字數 1333 閱讀 3324

架構設計兩大支柱思維:

能夠通過分解或者分層進行應用簡化

首先分析應用的功能需求

然後決定如何對應用進行分解或者分層

也就是說這個策略會幫助我們將應用如何合理分層,以及每一層應該處理的功能。

要能夠讓分層的邏輯簡單直接

換句話說,不能因為分層反而造成應用變得複雜

一般對於乙個網路應用程式,大致包含如下功能:

處理使用者的輸入內容,然後返回給使用者需要的內容

需要對程式中出現的錯誤返回給使用者合理的問題描述

事務處理

進行使用者的授權和認證

實現應用程式的業務處理

和資料儲存系統以及外部系統進行互動

我們把程式的功能實現分為三層進行處理:

web 層,網路應用程式的最外層,負責處理使用者的輸入然後返回使用者需要的內容;web層要負責異常處理的資訊展示;web層是程式的入口,它要作為第一道防線,來對使用者進行認證和授權。

service層,它位於web層之下,執行乙個事務邏輯完整處理,通常包括應用服務和基礎服務。應用服務提供了service層的公共介面,作為事務的完整處理,它也負責授權認證。基礎服務負責和外部資源,比如檔案系統,資料庫系統,郵件伺服器,進行資料傳輸。通常這些服務被多個應用服務所使用。

repository層,網路應用程式的最底層,它負責和資料儲存器打交道,增刪改,查詢等等。

下面要理清層與層之間如何互動,也就是介面如何定義。我們會用到兩個術語:dto資料傳輸物件和domain model業務模型物件。

dto比較好理解,就是資料的承載物件,負責在層與層中間的資料傳遞,而業務模型則包含了三種型別:

無狀態業務服務物件,提供與業務概念相關但又不屬於乙個實體或者值物件的一些操作;

實體物件對應於能夠在整個生命週期都保持乙個唯一標識的物件;

值物件描述乙個屬性,它沒有唯一標識,它的生命週期只能與乙個實體物件繫結。

這裡會對dto產生疑問,為什麼不能直接傳遞給web層實體物件或者值物件?

如果傳遞實體物件到web層,那麼web層就必須了解如何使用它們,web層承擔了它職責以外的事情;相反如果僅傳遞dto,web層的**看起來會更加簡潔清晰。

如果暴露細節給web層,對於業務模型的修改就會受到牽制;如果僅傳遞dto,那麼只要保持dto不變,業務模型可以根據需要進行各種程度的更改。

根據以上分析,我們得出最終的架構設計:

以上翻譯自:

mysql經典應用架構 MySQL經典架構

mysql主從複製 此種架構,一般初創企業比較常用,也便於後面步步的擴充套件 此架構特點 1 成本低,佈署快速 方便 2 讀寫分離 3 還能通過及時增加從庫來減少讀庫壓力 4 主庫單點故障 5 資料一致性問題 同步延遲造成 mysql mmm架構 通過 drbd 基於 block 塊的複製模式,快速...

springMVC架構搭建

1依賴jar包 2.springmvc的配置檔案web.xml 在web當中配置 disparcherservlet,用來啟動 springmvc 攔截請求,把需要有 controller 處理的請求交給 controller.x servlet.xml 預設的名字,對應 web.xml 當中配置 ...

springmvc核心架構

3 dispatcherservlet handleradapter,handleradapter將會把處理器包裝為介面卡,從而支援多種型別的處理器,即介面卡設計模式的應用,從而很容易支援很多態別的處理器 4 handleradapter 處理器功能處理方法的呼叫,handleradapter將會根...