I am developing a WPF application that uses an SQL Express database and runs on the clients PC (as well as the database). This application will be used by multiple clients but every client's database will contain unique records. The database contains textual data as well as image blobs, thus its size can become pretty large (2GB on average).
Now I want to make an up to date backup to a central server in a datacenter. Furthermore I would like to provide an ASP.net MVC based backoffice to the clients so they can also manipulate data from anywhere on the net without having access to the application itself.
After searching around for a while I have found the MS Sync Framework and I think this will be a great way to accomplish this, since it will create a copy of the clients local database and they will be able to modify data on this copy that will be synced back to the local db, even when the local PC is turned off (sync on next startup).
Since there is already an WCF service in place for licensing purposes and other functions, I would like to also use this for the sync, which seems perfectly possible
However, all examples I find on the internet speak about multiple clients working on a copy of the same database which is then synced to eachother through a central hub or in a peer to peer fashion.
I cannot find any examples however how I would be able to keep a copy of each client seperately on the server. I suppose I need to create a db on the server's SQL for each client, and figure out a way to have the WCF use this db.
Each client is identified on the WCF by its authentication certificate's DN.
Please advice how I could do this, if this would be the best way, if there is a way to easily provision the db for the client on the server on the fly (I don't want to set these up manually). I am also wondering what then would be the best way to update all these databases (on the server and the clients) when the schema would change.