Share via


ActiveSync Architecture

A version of this page is also available for

Windows Embedded CE 6.0 R3

4/8/2010

This topic describes the architectural components of ActiveSync..

ActiveSync Manager

ActiveSync supports data synchronization between a Windows desktop computer and a Windows Mobile device. After comparing the data objects on both machines, it updates both computers with the most-recent versions of those objects.

The ActiveSync manager handles the "global" tasks, such as detecting changes, transferring data, and resolving conflicts. It does not decide which data objects are to be kept, deleted, or copied. Those functions are performed by developer-written service providers.

ActiveSync Service Providers

An ActiveSync service provider is developer-written code, separate from the ActiveSync manager, that determines which data objects are to be updated, replicated, or discarded. Isolating these actions from the mechanical process of copying or deleting the objects simplifies the process of writing code to handle specific data.

An ActiveSync service provider requires two custom modules, usually compiled as DLLs. One runs on the desktop computer, the other on the Windows Mobile device.

The desktop module is an in-proc server that implements the IReplObjHandler and IReplStore COM interfaces.

The device module also implements the IReplObjHandler interface, which works with IReplObjHandler on the desktop computer to transfer data. This interface has three required functions: InitObjType, ObjectNotify, and GetObjTypeInfo. Three functions are optional: ReportStatus, FindObjects, and SyncData.

ActiveSync includes several ActiveSync service providers. For example, the Microsoft Outlook ActiveSync Service Provider synchronizes the Microsoft Outlook messaging and collaboration client with Outlook data on Windows Mobile devices.

Other data types require developer-written service providers to perform the synchronization. The developer has complete control over which data is synchronized and the criteria that determine when synchronization should be performed.