I have a scenario where my occasionally connected clients (WPF app, SQL Express DB) need to sync with a central SQL Server. The client machines are used in the field, and often times do not have any sort of connectivity. The plan is to use a smart-phone as an intermediary store and forward device. The client would push local changes to the phone. Then disconnect the phone, power down the laptop, and drive down the road. While driving, the phone will come into connectivity and upload the changes to the central office.
I need to know if I can do this with Sync Framework.
The documentation seems to indicate that the sync orchestration wants access to both the source and the destination. In this case, I don't have connectivity to the destination (central server). I suspect that I need to find a way to cache the destination's knowledge locally, but I'm not sure if that's appropriate.
It's may be worth noting that the client machines will have direct connections on a periodic basis, but not a daily basis.
So the scenario is:
- Client machine is directly connected on Monday and does a full sync.
- On Tuesday, user goes out in the field and uses app, generating updates / inserts / deletes to the SQL Express database.
- User "syncs" client machine to their smartphone. (Save file(s) to the SD card)
- User turns off client and drives down the road.
- Smart phone comes into connectivity and uploads files to central office.
- Central office "syncs" data from uploaded file(s) to the central SQL Server database.
- Repeat 2-6 for Wednesday, Thursday, Friday.
- On the following Monday, user is again directly connected for a full sync.
How do I do this with Sync Framework?
Does it help if I can have the smartphone downloading something daily from the central office (like central office's knowledge)? Is there harm done if the client is orchestrating a sync session against stale cached knowledge from the central office?
Thanks in advance!