Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm looking for some implementation ideas to be able to have offline apps sync data to a central server. The server will be Sql Server 2008. The clients will download data from the server when internet access is available and will need to allow the user to make changes offline and then sync the changes back to the server when it becomes available again. The clients will come in multiple flavors ranging from Windows to Android, so whatever I use needs to be easily translated into multiple OSes.

I have been looking at using Microsoft's Odata (odata.org) on the server. It looks to have some pretty neat features and appears to even partially support what I want (by means of a concurrency token) -- though I'm not sure how the logic would revolve around the use of this token yet, that's what I hope to get from this.

So - my question is this: Is there a 3rd party tool or app that I can use on multiple platforms which can handle offline & sync scenarios? If not, can anyone provide me with ideas on how to implement logic for syncing data back to a server and handle things like conflicts, etc.?

Thanks much

share|improve this question

3 Answers

I think you are going to have to deploy your application with a cross platform local database such as SQLite. Then you need to figure out what it means for your application to synchronize data in an application specific way.

Our application involved calibrating instruments at locations all over the US. However, there was only one person responsible for retrieving the initial data and generating updates for each site. For instance, Tom was in charge of the calibration trip to San Diego while Sam was responsible for the trip to Miami. That made data uploading quite a simple operation.

share|improve this answer

Microsft provide the Sync Framework which might be of interest: http://msdn.microsoft.com/en-us/sync/bb736753

share|improve this answer

You would be able to achieve this using the entity framework with disconnected entities. The entities can dan be published via a data service (e.g WCF using the HTTP api) to create a RESTfull service interface that can be consumed from the various platforms you're describing. The format in which you deliver these obejects is up to you, JSON would be a good one.

Upon posting back an entity you can then re-attach those to the ObjectContext which in turn will sort out the state of the object(new,changed,deleted, etc.) and can persist the changes.

Using sync framework is out of scope since it's not supported on non microsoft platforms. See FAQ http://msdn.microsoft.com/en-us/sync/bb906054

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.