Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Application: Command-based Application pattern #43

Open
lhaze opened this issue Jan 15, 2019 · 0 comments
Open

Application: Command-based Application pattern #43

lhaze opened this issue Jan 15, 2019 · 0 comments
Assignees
Milestone

Comments

@lhaze
Copy link
Collaborator

lhaze commented Jan 15, 2019

Command-based Application is a synchronous application design that follows CQRS principles. It splits all interactions on two separate kinds:

  • query interactions that return data but don't mutate any fragment of application state
  • command ones that can change the state and don't return anything but the status of their execution.

Query & command interactions might be served by separate component stacks (and therefore may differ on entity compositions, normalization of DAOs or locking strategies).

Command-based Application is one of the simplest in terms of web or CLI application design. Application is always the initiator of the execution and the query interactions are always pulled and commands are always pushed. The design assumes that once the request is served, almost everything(*) has been executed and there's nothing more to do.

(*) "Almost" because some of the execution might have been deferred and the consistency of the application state may be "only" eventual (i.e. it will happen any time soon, but not in the exact moment of serving the response).

@lhaze lhaze added this to the 0.1 milestone Jan 15, 2019
@lhaze lhaze self-assigned this Jan 15, 2019
@lhaze lhaze modified the milestones: 0.1, 0.2 Dec 1, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant