Principios de la sincronización de datos

Microsoft Sync Framework sincroniza los almacenes de datos, o réplicas, utilizando tres componentes básicos: una sesión de sincronización y dos proveedores de sincronización. Para sincronizar los datos, una aplicación crea una sesión de sincronización y le pasa un proveedor de origen y un proveedor de destino. La sesión utiliza el proveedor de origen para obtener los cambios nuevos que se han producido en la réplica de origen y el proveedor de destino para aplicar estos cambios en la réplica de destino.

La creación de un proveedor requiere la mayor parte del trabajo de desarrollo. Un proveedor mantiene los metadatos y el conocimiento para la réplica y los metadatos de cada elemento que se va a sincronizar. También realiza la transferencia de los datos de elemento reales con su almacén de datos. Un proveedor utiliza los componentes de Sync Framework para ayudar a enumerar los cambios cuando el proveedor actúa como proveedor de origen y para detectar los conflictos y aplicar los cambios cuando actúa como proveedor de destino.

Algoritmo de sincronización

El algoritmo de la sincronización unidireccional incluye los pasos siguientes:

  1. La sesión obtiene el conocimiento actual de la réplica de destino y la envía al proveedor de origen.

  2. El proveedor de origen enumera los cambios que no están contenidos en el conocimiento del destino.

  3. El proveedor de origen envía los cambios a la sesión.

  4. La sesión detecta los conflictos y aplica los cambios en la réplica de destino a través del proveedor de destino.

La sincronización bidireccional entre dos réplicas se lleva a cabo mediante dos sincronizaciones unidireccionales.

Código administrado: el objeto SyncOrchestrator realiza dos sincronizaciones unidireccionales cuando la propiedad Direction está establecida en DownloadAndUpload o en UploadAndDownload.

Código no administrado: la aplicación debe crear un objeto ISyncSession para cada sincronización unidireccional.

Administración de los metadatos

Cada réplica debe proporcionar a la comunidad de sincronización un conjunto de metadatos que describe su conocimiento y a sí misma. (Una comunidad de sincronización es un conjunto de réplicas que pueden sincronizarse entre sí). Los metadatos necesarios para cada réplica son el identificador de la réplica, el contador actual, el mapa de claves de la réplica, el conocimiento actual, el conocimiento olvidado, un registro de conflictos y un registro de marcadores de exclusión. Una réplica también debe mantener los metadatos para cada elemento que se va a sincronizar. Los metadatos necesarios para cada elemento son el identificador global, la versión actual y la versión de creación. Normalmente, el proveedor de sincronización administra los metadatos que se requieren para la sincronización. Sin embargo, dependiendo de la implementación de la réplica, puede ser más útil para algunas partes de la administración de los metadatos ser tratados por un componente independiente, como un servicio que limpie los marcadores de exclusión según una programación en lugar de durante la sincronización.

Para obtener más información acerca de los metadatos, vea Requisitos de metadatos.

Proveedores de sincronización

El proveedor administra los metadatos de una réplica y usa Sync Framework para enumerar los cambios y detectar los conflictos. El proveedor también utiliza el almacén de elementos de una réplica para enviar los datos de los elementos cuando el proveedor actúa como proveedor de origen y para aplicar los cambios cuando actúa como proveedor de destino.

Código administrado: un proveedor implementa los métodos abstractos y propiedades de KnowledgeSyncProvider, IChangeDataRetriever e INotifyingChangeApplierTarget.

Código no administrado: un proveedor implementa las interfaces IKnowledgeSyncProvider, ISyncProvider, ISynchronousNotifyingChangeApplierTarget e ISynchronousDataRetriever (o, para los proveedores asincrónicos, las versiones asincrónicas).

Para obtener más información sobre los proveedores de sincronización y cómo implementar y utilizar estas interfaces, vea Proveedores de sincronización.

Aplicaciones de sincronización

La aplicación es el componente que crea el objeto de sesión de sincronización, lo conecta con los proveedores y hospeda el motor de tiempo de ejecución de sincronización.

Implementar una aplicación de sincronización utilizando código administrado

Para iniciar la sincronización, cree un objeto SyncOrchestrator. A continuación, establezca las propiedades RemoteProvider y LocalProvider en las interfaces SyncProvider de los dos proveedores que desea sincronizar. La aplicación obtiene o crea las interfaces de proveedor utilizando el método que resulte adecuado. Una vez creado el objeto SyncOrchestrator, llame a Synchronize para iniciar la sincronización. En este momento, Sync Framework realiza todas las llamadas necesarias en los dos proveedores para realizar la sincronización.

Tanto el objeto SyncOrchestrator como el objeto KnowledgeSyncProvider generan eventos durante la sincronización. Para recibir un evento, implemente un método de control de eventos y regístrese para recibirlo.

Implementar una aplicación de sincronización utilizando código no administrado

Para iniciar la sincronización, cree un objeto ISyncSession pasando CLSID_SyncServices e IID_IApplicationSyncServices a la función CoCreateInstance y, a continuación, llame a IApplicationSyncServices::CreateSyncSession en el objeto IApplicationSyncServices que se devuelve.

El método CreateSyncSession requiere las interfaces ISyncProvider de los dos proveedores que desea sincronizar. La aplicación obtiene o crea las interfaces de proveedor utilizando el método que resulte adecuado. Una vez creado el objeto ISyncSession, llame a ISyncSession::Start para iniciar la sincronización. En este momento, Sync Framework realiza todas las llamadas necesarias en los dos proveedores para realizar la sincronización.

El objeto ISyncSession genera eventos durante la sincronización. Para recibir los eventos, implemente la interfaz ISyncCallback y regístrela utilizando ISyncSession::RegisterCallback.

Vea también

Referencia

Interfaz ISyncSession
Interfaz ISyncProvider
Interfaz IKnowledgeSyncProvider
Interfaz ISynchronousDataRetriever
Interfaz ISynchronousNotifyingChangeApplierTarget
Interfaz IApplicationSyncServices
Interfaz IProviderSyncServices
Interfaz ISyncCallback
SyncOrchestrator
KnowledgeSyncProvider
IChangeDataRetriever
INotifyingChangeApplierTarget
SyncCallbacks

Conceptos

Requisitos de metadatos
Proveedores de sincronización
Aplicaciones de sincronización

Otros recursos

Microsoft Sync Framework