Take the 2-minute tour ×
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.?

share|improve this question

closed as not constructive by gnat, Kilian Foth, MichaelT, maple_shaft Jun 11 '13 at 23:28

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

    
Microsft provide the Sync Framework which might be of interest: msdn.microsoft.com/en-us/sync/bb736753 –  Kane Sep 16 '11 at 13:14
add comment

2 Answers

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
add comment

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
add comment

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