I have an app where certain data is stored in the database. Multiple users access the same set of data (similar of a collaboration tool). However, they can non deterministically work on stale data. For example, if there are three work tabs and someone is working on tab 1, it may not matter to him if tab 2 is modified. All CRUD operations are supported.
There are three different ways in which updates to the data can be communicated with the client apps:
- Notify all users on every change and force update the entire UI. (Easy to implement, extremely poor user experience)
- Notify all the users on change but only update the portion of UI that needs to be changed. (Complex to implement, optimal user experience)
- Notify on change, but don't update UI. Show exception only if there is an error in subsequent operations. (Easier to implement, can lead to suboptimal user experience)
What is a good architectural tool to implement this? So what I might be looking for is something like flux, but only distributed.