Patent ID: 8688627

Claim:
A system having computer executable components for implementing data updates to a shared document maintained in server-side storage, comprising: a server-side computing device including at least one processor and a memory, the server-side computing device configured to provide a server-side component comprising: a transaction coordinator that facilitates concurrent access to the shared document by multiple client computing devices, the transaction coordinator operative to receive a transaction from an originating client computing device that represents a data update and to commit the data update to the shared document in an atomic operation; and a message server for pushing the transaction to a listening client computing device; and a first client-side computing device and a second client-side computing device, each client-side computing device including at least one processor and a memory, and each client-side computing device configured to provide a client-side component comprising: a data update event bus for automatically propagating the data update from a component executing on the originating client-side computing device to a data model object configured to implement the data update on a version of the shared document cached locally; and a transaction manager for creating the transaction that describes the data update and causing the transaction to be transmitted over a network to the server-side component; wherein facilitating concurrent access to the shared document by multiple client computing devices includes: when no client-side computing devices are yet accessing the shared document, allowing the first client-side computing device to subscribe with the server-side component as a listener for modifications to the shared document; instructing the transaction manager of the first client-side computing device to gather transactions that represent data updates without immediately propagating them to the server-side component; subscribing, by the server-side component, the second client-side computing device as a listener for modifications to the shared document; and in response to the subscription of the second client-side computing device: instructing the transaction manager of the first client-side computing device to immediately propagate at least one transaction that represents data updates from the first client-side computing device to the server-side component for subsequent propagation to client computing devices subscribed as listeners for modifications to the shared document; and instructing the transaction manager of the second client-side computing device to immediately propagate at least one transaction that represents data updates from the second client-side computing device to the server-side component for subsequent propagation to client-side computing devices subscribed as listeners for modifications to the shared document.