Abstract:
A computing device executes a client-side instance of an application that supports bi-directional real-time synchronous communication and real-time asynchronous communication with a server computing device by way of an application programming interface (API) that conforms to representative state transfer (RESTlike) design principles. An eventing framework on the server computing device is used to aggregate updates to resources on the server that are requested by the client computing device, and is further used to transmit metadata to the client computing device that indicates which updates are available. Real-time sensitive updates are included in the metadata, and the client computing device can decide when and how to retrieve other available updates. An asynchronous operation is modeled on the server computing device by an operation resource that can modify other resources on the server computing device and cause updates regarding status of the operation to be sent to the client computing device.
Abstract:
An application distributed amongst plurality of computing devices leverages an application programming interface that conforms to a representational state transfer architecture in order to provide resilient services to clients and adapt to a change in availability of devices. A proxy server routes communications between clients and servers, detects when a server becomes unavailable, and reroutes communications to a replacement server. A registration database on the proxy server records entries for clients, such that communications can be routed to active devices of a user.
Abstract:
Client and server-side instances of an application leverage an application programming interface (API) that complies with a representational state transformation architecture and supports backwards-compatible feature-level version control. A resource maintained by the server-side instance of the application is revised independent of revisions of a remainder of the application. The server-side instance of the application maintains multiple versions of a resource and/or a resource that is a superset of revisions of the resource, such that a compatible version of the resource is served to the client-side instance of the application.