MVC模式的替代者ADR

banq發表於2018-09-13
ADR是Action-Domain-Responder的簡稱,動作-領域-響應者是將HTTP客戶端和HTTP伺服器端應用程式之間的使用者互動組織為三個不同的角色:

MVC模式的替代者ADR

1. 動作Action是連線Domain和Responder的邏輯。它從HTTP請求收集的輸入並呼叫Domain,然後呼叫Responder構建HTTP響應所需的資料。

2.領域Domain是構成應用程式核心的領域邏輯的入口點,根據需要修改狀態和永續性,這可以是事務指令碼、服務層、應用程式服務或類似的東西。

3.響應者Responder是介面顯示邏輯,根據從Action接收的資料構建HTTP響應,它處理狀態程式碼、標題和cookie、內容、格式和轉換,模板和檢視等。

它們之間協作是這樣:
1. Web處理程式接收HTTP請求並將其分派給Action。

2. Action呼叫Domain,後者從HTTP請求收集任何所需的輸入到Domain中,作為Domain的入參。

3. 然後,Action呼叫Responder,構建HTTP響應所需的資料(通常是HTTP請求和域結果,如果有的話)。

4. Responder是構建一個HTTP響應,使用的是Action傳給它的資料。

5. Action將HTTP響應返回到web處理器,向客戶端傳送HTTP響應。

對於每個Action類/閉包,都有一個Responder類/閉包。

ADR不是全新的,而是MVC的一種改進定義。它更好地描述了Web系統中的互動,並且可能比原始MVC更好地分離了關注點。

MVC最初是桌面圖形使用者介面的設計模式,它有許多不同的解釋,包括許多相似/不同的後繼者,如MVP或MVVM。然而,MVC們並沒有很好地描述伺服器端是web-app架構下的情形,這就是pmjones為了 Web目的而改進術語MVC的原因。

在傳統的MVC中,控制器Controller通常包含多個動作方法,然後傳入的請求就被分派給這些動作方法,控制器本身被忽視了,這就是為什麼在ADR中每個Action都由單類或閉包表示。

Action Domain Responder

相關文章