Model – state of things
Service – access to the state
Data-Contracts – how the state is presented to clients
Proxy – how a remote client deals with the service; the representation of service operations in another programming environment
View-Model – all sort of additional goodies to make the state and proxy behave reactively and transparently to the UI (lots of data wrappers, state-change notifications and command/selection driven service operations).
User-Interface – template driven from the view-model
I’ll admit it isn’t as succinct as pithy initialisms such as MVC or MVVM, but it is more accurate for what I do. It is generally bi-directional as well.
- Model expressed through services as contracts are accessible through proxies as view-models (and contracts) that are projected into user interface.
- User-interface is manipulated to affect view-models that use proxies to invoke service operations (typically with data contracts as parameters) that alter model state.