Hi!
My company developed a windows mobile application using CF 1. It's for a company who does service on fire protection systems and installs them. Their service synchronize, get their service orders then they synchronize back after the work is done.
I've got the task to rewrite the whole app from scracth using CF 2 and Sql Server CE. I really want to use llblgen for this but that's not where the "problem" is, it's like for everyone else, synchronization. There are a number of ways to synchronize data between the smart device and a server. Our old solution was to send the data as a dataset using webservices and then read it into the application. However the amount of data now is 3-4mb which is one reason we want to rewrite it.
What our research have show is this:
-
Sql server replication, merge
Problem with having control of what get merged.
-
Sql Server Remote Data Access
Simple push pull whole tables, not really that interesting
-
Remoting
There are not remoting in CF but there are workarounds. Remoting is superfast, if you do .NET in both applications this is interesting but you have to write it all by yourself.
-
Webservices
Easy to setup, slow, lot of overhead data with soap. In our application, time for synchronization isn't critical, if it take 10 seconds or 3 minutes it's not a problem.
To choose a synchronization method is really how the application is suppose to work and what demand the client has. Sql server merge seems very nice but does anyone have knowledge about pitfalls, what happens if synch stops in the middle, pda user drops his pda and all data is lost. Will there be a rollback on the serverside? My client has declared what fields are "owned" by the server and what are "owned" by the pda when merging. How easy is it to setup that kind of thing in Sql server's merge?
I think I will go for webservices, using timestamp and doing my own merging routine. Anyone have any suggestions or real life experience?