In a typical synchronization scenario, the two data stores are on different computers or devices that are connected over a network. A controlling application runs on a third computer or on the same computer as one of the data stores. A common way to perform synchronization is for the synchronization providers to run on the computer local to the controlling application. In a typical implementation, each provider communicates directly with the remote data store to send and retrieve data in a piecemeal fashion. This approach typically means lots of local-remote round trips to retrieve items and to apply changes, and relies on the local computer to perform the bulk of the synchronization processing. There's a better way! A more efficient method is to use a proxy provider on the local computer. The proxy provider sends metadata and data to a provider that runs on the remote computer, allowing the bulk of synchronization processing to be distributed to the remote computer. When change data caching is added, only one round trip is needed to process each change batch.
I've written an article that shows you how to implement a proxy provider that uses Windows Communication Foundation (WCF) to send data and commands over the Internet to a remote provider running on a Web server. The pattern used in this article can be easily adapted to work with any protocol over any network.
The article can be read here: Synchronizing a Remote Replica By Using a Proxy Provider.
The article draws heavily on the Sync101 with Remote Change Application over WCF sample on the MSDN Code Gallery. If you'd rather skip the reading and just look at the code, click here: Sync101 with Remote Change Application over WCF.