MVC模式的替代者ADR

banq 18-09-13
              

ADR是Action-Domain-Responder的简称,动作-领域-响应者是将HTTP客户端和HTTP服务器端应用程序之间的用户交互组织为三个不同的角色:


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