Action–___domain–responder

(Redirected from Action-Domain-Responder)

Action–___domain–responder (ADR) is a software architectural pattern that was proposed by Paul M. Jones[1] as a refinement of Model–view–controller (MVC) that is better suited for web applications. ADR was devised to match the request-response flow of HTTP communications more closely than MVC, which was originally designed for desktop software applications. Similar to MVC, the pattern is divided into three parts.

Components

edit
  • The action takes HTTP requests (URLs and their methods) and uses that input to interact with the ___domain, after which it passes the ___domain's output to one and only one responder.
  • The ___domain can modify state, interacting with storage and/or manipulating data as needed. It contains the business logic.
  • The responder builds the entire HTTP response from the ___domain's output which is given to it by the action.

Comparison to MVC

edit

ADR should not be mistaken for a renaming of MVC; however, some similarities do exist.

  • The MVC model is very similar to the ADR ___domain. The difference is in behavior: in MVC, the view can send information to or modify the model,[citation needed] whereas in ADR, the ___domain only receives information from the action, not the responder.
  • In web-centric MVC, the view is merely used by the controller to generate the content of a response, which the controller could then manipulate before sending as output. In ADR, execution control passes to the responder after the action finishes interacting with the ___domain, and thus the responder is entirely responsible for generating all output. The responder can then use any view or template system that it needs to.
  • MVC controllers usually contain several methods that, when combined in a single class, require additional logic to handle properly, like pre- and post-action hooks. Each ADR action, however, is represented by separate classes or closures. In terms of behavior, the action interacts with the ___domain in the same way that the MVC controller interacts with the model, except that the action does not then interact with a view or template system, but rather passes control to the responder which handles that.

References

edit
  1. ^ "Action-Domain-Responder: A Tentative MVC Refinement". paul-m-jones.com.
edit