Unidirectional data flow

47
Unidirectional Data Flow by Denis Gorbunov

Transcript of Unidirectional data flow

Page 1: Unidirectional data flow

UnidirectionalData Flow

by Denis Gorbunov

Page 2: Unidirectional data flow
Page 3: Unidirectional data flow

CQSCommand Query Separation

Page 4: Unidirectional data flow

• Queries: Return a result and do not change the observable state of the system (are free of side effects).

• Commands (modifiers): Change the state of a system but do not return a value.

http://martinfowler.com

Page 5: Unidirectional data flow

CQS

Page 6: Unidirectional data flow

CQRSCommand Query Responsibility Segregation

Page 7: Unidirectional data flow

Command query responsibility segregation (CQRS) applies the CQS principle by using separate Query and Command objects to retrieve and modify data,

respectively.http://udidahan.com

Page 8: Unidirectional data flow

CQRS

Page 9: Unidirectional data flow

CQRS

Page 10: Unidirectional data flow
Page 11: Unidirectional data flow

MVC and Flux

Page 12: Unidirectional data flow

MVC

Page 13: Unidirectional data flow

MVC

Page 14: Unidirectional data flow

MVC

Page 15: Unidirectional data flow
Page 16: Unidirectional data flow

Flux

Page 17: Unidirectional data flow

Flux

Page 18: Unidirectional data flow

Flux

Page 19: Unidirectional data flow

Flux

Page 20: Unidirectional data flow

Simple Demo

Page 21: Unidirectional data flow
Page 22: Unidirectional data flow
Page 23: Unidirectional data flow
Page 24: Unidirectional data flow
Page 25: Unidirectional data flow
Page 26: Unidirectional data flow
Page 27: Unidirectional data flow
Page 28: Unidirectional data flow
Page 29: Unidirectional data flow
Page 30: Unidirectional data flow
Page 31: Unidirectional data flow
Page 32: Unidirectional data flow
Page 33: Unidirectional data flow
Page 34: Unidirectional data flow
Page 35: Unidirectional data flow
Page 36: Unidirectional data flow

Redux is a predictable state container for JavaScript apps.http://redux.js.org

Page 37: Unidirectional data flow

http://redux.js.org

Redux: Three Principles• Single source of truth• State is read-only• Changes are made with pure functions

Page 38: Unidirectional data flow

Redux

Page 39: Unidirectional data flow

Redux

Page 40: Unidirectional data flow

Redux

Page 41: Unidirectional data flow

Redux: Store

http://redux.js.org

Page 42: Unidirectional data flow

Redux: Action

http://redux.js.org

Page 43: Unidirectional data flow

Redux: Reducer

http://redux.js.org

Page 44: Unidirectional data flow

Redux: combineReducers

http://redux.js.org

Page 45: Unidirectional data flow

Redux: combineReducers

Page 46: Unidirectional data flow

Resources

• http://martinfowler.com/bliki/CommandQuerySeparation.html• http://martinfowler.com/bliki/CQRS.html• http://martinfowler.com/eaaDev/EventSourcing.html• https://www.exclamationlabs.com/blog/the-case-for-unidirectional-d

ata-flow/• http://jaysoo.ca/2015/02/06/what-the-flux/• https://github.com/reactjs/redux/issues/351• https://facebook.github.io/flux/docs/overview.html• http://squirrel.pl/blog/2015/08/31/introduction-to-event-sourcing-an

d-command-query-responsibility-segregation/• https://msdn.microsoft.com/en-us/library/jj554200.aspx• https://github.com/reactjs/redux• http://blog.angular-university.io/angular-2-application-architecture-

building-flux-like-apps-using-redux-and-immutable-js-js/• https://medium.com/google-developer-experts/angular-2-introducti

on-to-redux-1cf18af27e6e#.k1wlv92e2• https://vsavkin.com/managing-state-in-angular-2-applications-caf78

d123d02#.92aubeqeh

Page 47: Unidirectional data flow

The End