N-Tier
是從架構更大的維度上劃分,每個維度都是一個Tier(在微軟的ESP2.0裏翻譯爲」級」),好比電商架構劃分以下:算法
- UI
- 服務接口
- 消息、緩存中間件
- 數據庫
- ......
Tier與Tier之間經過Tcp/Http通信,而且每一級均可以獨立部署。數據庫
N-Layer
相對Tier,Layer是更細粒度的劃分,好比服務接口Tier就能夠劃分爲:表示層、業務邏輯層和數據訪問層三個Layer。每個Layer是沒有必要獨立部署的,不然只會更影響性能。緩存
總結
Tier通常指物理上的分層,Layer是邏輯上的分層。安全
分層重要思想
職責分離和關注點分離。服務器
架構拆分的經常使用方法
- 化整爲零
- 動靜分離
- 按功能拆分
Anemic Domain Model
貧血型領域模型模式,和Domain Model很像,主要區別以下:架構
- Domain Model的領域類中包含了自身的業務邏輯和數據,以及對象之間的關係
- 貧血型的領域類將與自身相關的業務處理邏輯所有轉移到了模型以外--有專門的業務規則類,這使得領域類成爲了一個簡單的數據對象。
策略模式
把不一樣的算法和行文分別封裝成獨立的對象(類),實現統一的策略接口;具體業務依賴於策略接口,從而能夠靈活實現算法、行爲的切換。主要解決在有多種算法類似的狀況下,使用 if...else 所帶來的複雜和難以維護問題。函數
裝飾者模式
核心思想優先採用組合而不是繼承。性能
模板方法
最直接的理解就是「模板」:包括變化和不變化的兩個部分,將變化的部分交給子類實現。一個重要的點就是「鉤子」函數,一種被聲明在抽象類中的方法(空的和默認的實現),可讓子類本身決定對算法的不一樣點進行掛鉤。翻譯
策略模式是除了繼承以外的一種彈性方案。若是採用繼承來定義一個類的行爲,咱們將會被這個行爲困住,甚至修改起來很困難。有了策略模式,就能夠經過組合不一樣的策略對象來改變行爲。中間件
服務定義粒度:
- 不要使用泛泛的UpdateCustomerDetails來定義操做,而要用ChangeCustomerAddress、RecordCustomerMarriage之類的有業務意義的名稱來定義操做。操做簡單、易於理解,從而提升了易用性。
- 若是服務使用的範圍有限,如僅僅在企業內部應用集成,則能夠選擇相對較細粒度的服務接口,爲服務請求者提供更多靈活性,若是服務使用的範圍擴大,服務的大小也應隨之擴大,如企業外部集成
- 多參數時採用結構化,我的認爲超過3個時最好用結構化入參。操做靈活,不干擾現有使用者的狀況下提供新版本。
預定保留模式
- 發送一個請求給服務器,從服務端的響應中獲取一個預定保留的惟一編號(有必定期限,爲了不資源耗費及一些安全性問題)
- 客戶端餘下的請求中都會帶上這個編號,以便服務器把這些請求當成一個事務來處理
等冪模式
- 每一次客戶端請求都被賦予了一個惟一的請求標識(生成規則多是經過這個請求的一些參數作一些算法來生成)
- 服務端在一個存儲區域檢查這個惟一的標識所表明的請求是否已經被處理過了,是否有對應的響應信息,若是有就從響應存儲設備(如數據庫、緩存)中返回響應信息,若是沒有再次處理這個請求。