As a rich client application developer one of the most complex piece of building any application is providing support for working offline. Historically most consumer applications haven’t had strong requirements for working offline (Facebook, Twitter, Instagram etc don’t make much sense when you’re offline) but in the enterprise there are a lot of scenarios where offline data is an important piece of any application.
Ever since the days of Windows Mobile (v1, ie what used to be Pocket PC) there have been libraries/frameworks produced by Microsoft to make it easy to build applications that synchronise data. A short list of these include:
- Merge Replication
- Sync Framework (multiple versions)
- Azure Mobile Services
Unfortunately nearly all of these struggled as they attempted to synchronise relational data and there was no clear guidance from Microsoft on how they should be used.
Recently the other cloud players have been taking Microsoft to task by releasing frameworks that make it easy for app developers to get started. Note the important piece here are that these, like Azure Mobile Services, form part of the PaaS offering for the cloud provider. The implication being – if a cloud provider can get you to sign on to one or more PaaS services, they have you for the life of the application. Unlike IaaS or containers, PaaS makes it very difficult (not impossible) to simply switch to another cloud provider.
Over at Amazon, they have AWS AppSync
Over at Google, they have Google App Engine