Platform SDK: Exchange Server |
To synchronize information stores, a mechanism is required for retrieving incremental changes from one information store and placing these changes into another information store. This mechanism is implemented as part of the Microsoft Exchange Client.
Incremental change synchronization requires three component processes:
The following diagram shows these component processes and their interactions with the information store.
A collector and synchronizer pair is supplied with the Microsoft Exchange Server.
The agent is an external process that enables communication between the synchronizer and the collector. The agent process schedules and configures synchronization. The agent does not require detailed knowledge of the information store. Because more than one schedule for synchronization and more than one set of stores to synchronize may exist, more than one agent may also exist for the same information store.
The synchronizer receives a message from the agent when a synchronization is requested. The synchronizer then gathers a set of changes and transfers them to the collector process at the receiving information store. The synchronizer waits for a success message from the collector process. When the synchronizer receives this message, it transfers the next set of changes until all are complete. At the end of the process, the synchronizer sends a completion message to the agent.
The collector mechanism imports the changes sent by the sending information store's synchronizer. The collector mechanism sends a success message back to the synchronizer when a set of changes has been successfully synchronized.
The synchronization state is a record of what has been exported in a synchronization action. By tracking what has been exported, it helps to determine what needs to be exported during the next synchronization.
The format of the synchronization state data is agreed on between the collector and synchronizer mechanisms for a specific information store. For example, if each change on a store is assigned a sequential index, and the highest index successfully received by the second information store is kept by the synchronizer, changes with indexes higher than this stored index can be transferred at the next synchronization. The agent determines where this state information is stored.
Synchronization involves sending messages across a network, so the possibility of a lost message or other unsuccessful partial synchronization always exists. Thus state information must be maintained for use either by the synchronizer or the agent.