1. A method of synchronizing a client dataset of a synchronization client with a reference dataset of a synchronization server, the method comprising: receiving at the synchronization server a plurality of synchronization messages from the synchronization client and controlling the queuing of said messages according to the following rules: if a message is a change message, reading a change identifier from the message and writing the change identifier into a change ID list, placing the message in a queue for possible nonsequential processing, and proceeding to receive another message; and if a message is not a change message, making the message available for immediate processing as an unqueued message, and waiting until the message is processed before proceeding to receive another message; and processing said plurality of synchronization messages, according to the following rules: if there is at least one queued message and there is no unqueued message, processing the next queued message; if there is an unqueued message and there is no queued message, processing the unqueued message; if there is at least one queued message and there is an unqueued message, then: if processing the unqueued message requires that the reference dataset be up-to-date, processing the next queued message; otherwise processing the unqueued message, wherein, processing a change confirmation request message involves reading change identifiers from the change ID list and generating a change confirmation message.