Today I have finally managed to run client(windows mobile device) – wcf – sql server 2008 synchronization (after many problems, mostly for MS part)
I did test. For 24 000 records the average time for the snapshot takes about 1 minute 20 seconds. It is the time after I have downloaded the fix for Microsoft Sync for ADO.NET.
I have also discovered that after 50 seconds the database file finally starts to grow and it takes about 25 seconds.
What is the framework doing for the first 50 seconds? Loading and serializing data?
On some page, I found the article about surrogate serialization which can decrease the amount of data being transferred.
Do you know if the synchronization process might benefit from this? (I mean for MS Sync for Ado.net after hotfix?)
Is there anything I can do to speed up the process? In my opinion 1:24 for 24000 is twice too much…
There are two major issues with the synchronization framework for devices:
The hot fix you mentioned addresses #3 as best as it can, so there isn’t much else you can do there.
number 2 is part of the synchronization framework, and there is nothing to be done about it i’m afraid.
As for #1, this is where much of that 50 seconds (perhaps 30 or so?) is being used: when the client receives the dataset, it must de-serialize the entire stream (where the stream consists of extremely verbose XML) before processing can begin. For large datasets (10,000+ rows) this can take a long time, and can (and will eventually) even lead to Memory Crunch scenarios once available heap memory is maxed out.
The serialization surrogate method you reference will substantially decrease the size of the response stream being exchanged (in my testing, it was almost 90% smaller in some cases). This will definitely improve response times somewhat, especially when the network connection throughput is limited. However, at the end of the day you can’t get around the fact that that stream must be de-serialized into a DataSet before client side processing can begin.
All that to say: yes, the surrogate serialization method WILL decrease the amount of data being transferred, and you are likely to realize some improvement, but how much will depend on factors such as:
Hope this helps!