Implementar un proveedor estándar personalizado
En Microsoft Sync Framework, un proveedor de sincronización es un componente de software que permite a una réplica sincronizar sus datos con otras réplicas. Mediante el uso de una sesión de sincronización, una aplicación de sincronización conecta un proveedor de destino con un proveedor de origen para sincronizar los elementos que han cambiado en la réplica de origen con la réplica de destino. Un proveedor de sincronización que administra una carpeta en un sistema de archivos es un ejemplo simple de proveedor de sincronización. Este proveedor puede estar conectado con otro que también administra una carpeta para sincronizar los archivos de su carpeta con los de la carpeta del otro proveedor.
Durante la sincronización, el proveedor de destino proporciona su conocimiento actual, acepta una lista de cambios del origen, detecta cualquier conflicto entre esa lista y sus propios elementos, quizás filtra la lista de elementos y aplica los cambios en su almacén de datos. El proveedor de origen utiliza el conocimiento actual de la réplica de destino para determinar qué cambios se encuentran en la réplica de origen de los que no hay conocimiento en la réplica de destino, quizás filtra la lista de cambios y envía la lista de cambios al proveedor de destino. Sync Framework proporciona los componentes para administrar muchas de estas tareas en nombre de estos proveedores.
Implementar un proveedor de sincronización
Un proveedor de sincronización se puede implementar utilizando código administrado o no administrado.
Seguridad Nota |
---|
Sync Framework trata los proveedores de sincronización como código de confianza. Por consiguiente, una aplicación que llama a un proveedor de sincronización debe establecer que el proveedor sea de confianza, ya sea teniendo el conocimiento explícito del proveedor o utilizando algún otro mecanismo, como una firma digital. |
Implementar un proveedor de sincronización utilizando código administrado
La tarea principal al desarrollar un proveedor es implementar la clase abstracta KnowledgeSyncProvider (que hereda de la clase abstracta SyncProvider) y las interfaces INotifyingChangeApplierTarget e IChangeDataRetriever.
Para que la sincronización pueda comenzar, el proveedor primero debe hacer que la implementación de SyncProvider esté disponible para la aplicación de sincronización utilizando el mecanismo que la aplicación requiera.
Durante una sincronización típica, Sync Framework realiza las llamadas básicas siguientes:
Se llama a BeginSession en ambos proveedores. Así se informa a un proveedor de que se está uniendo a una sesión de sincronización.
Se llama a GetSyncBatchParameters en el proveedor de destino. El proveedor de destino devuelve su conocimiento y el tamaño del lote solicitado.
Se llama a GetChangeBatch en el proveedor de origen y se pasa el conocimiento del proveedor de destino. El proveedor de origen utiliza el conocimiento del proveedor de destino para detectar los cambios y devuelve un lote con ellos. Para obtener más información, vea Enumerar los cambios.
Se llama a ProcessChangeBatch en el proveedor de destino y se pasa la lista de cambios del proveedor de origen. El proveedor de destino utiliza el componente aplicador de cambios de Sync Framework para detectar los conflictos y aplicar los cambios. Para obtener más información, vea Controlar los conflictos y Aplicar los cambios.
Se llama a LoadChangeData en el proveedor de origen para cada cambio del lote. El proveedor de origen devuelve una interfaz a su mecanismo de transferencia de datos.
Se llama a SaveItemChange en el proveedor de destino para cada cambio del lote. El proveedor de destino utiliza el mecanismo de transferencia del origen para transferir los datos que están asociados al cambio.
Se llama a StoreKnowledgeForScope en el proveedor de destino. El proveedor de destino guarda el conocimiento que se pasa como su conocimiento actual.
Se llama a EndSession en ambos proveedores. Así se informa a un proveedor de que está dejando una sesión de sincronización a la que se había unido previamente.
Para obtener más información acerca de cómo crear un proveedor de sincronización, vea Crear un proveedor de sincronización administrado.
Implementar un proveedor de sincronización utilizando código no administrado
La tarea principal cuando se está desarrollando un proveedor es implementar las interfaces IKnowledgeSyncProvider, ISyncProvider, ISynchronousDataRetriever e ISynchronousNotifyingChangeApplierTarget. También existen versiones asincrónicas de algunas de estas interfaces; vea Interfaz IAsynchronousDataRetriever e Interfaz IAsynchronousNotifyingChangeApplierTarget.
Para que la sincronización pueda comenzar, el proveedor primero debe hacer que la implementación de ISyncProvider esté disponible para la aplicación de sincronización utilizando el mecanismo que la aplicación requiera.
Durante una sincronización típica, Sync Framework realiza las llamadas básicas siguientes:
Se llama a BeginSession en ambos proveedores. Así se informa a un proveedor de que se está uniendo a una sesión de sincronización.
Se llama a GetSyncBatchParameters en el proveedor de destino. El proveedor de destino devuelve su conocimiento y el tamaño del lote solicitado.
Se llama a GetChangeBatch en el proveedor de origen y se pasa el conocimiento del proveedor de destino. El proveedor de origen utiliza el conocimiento del proveedor de destino para detectar los cambios y devuelve un lote con ellos. Para obtener más información, vea Enumerar los cambios.
Se llama a ProcessChangeBatch en el proveedor de destino y se pasa la lista de cambios del proveedor de origen. El proveedor de destino utiliza el componente aplicador de cambios de Sync Framework para detectar los conflictos y aplicar los cambios. Para obtener más información, vea Controlar los conflictos y Aplicar los cambios.
Se llama a LoadChangeData en el proveedor de origen para cada cambio del lote. El proveedor de origen devuelve una interfaz a su mecanismo de transferencia de datos.
Se llama a SaveChange en el proveedor de destino para cada cambio del lote. El proveedor de destino utiliza el mecanismo de transferencia del origen para transferir los datos que están asociados al cambio.
Se llama a SaveKnowledge en el proveedor de destino. El proveedor de destino guarda el conocimiento que se pasa como su conocimiento actual.
Se llama a EndSession en ambos proveedores. Así se informa a un proveedor de que está dejando una sesión de sincronización a la que se había unido previamente.
Para obtener más información acerca de cómo crear un proveedor de sincronización, vea Crear un proveedor de sincronización no administrado.
Vea también
Referencia
Interfaz IKnowledgeSyncProvider
Interfaz ISynchronousDataRetriever
Interfaz ISyncProvider
Interfaz ISynchronousNotifyingChangeApplierTarget
KnowledgeSyncProvider
SyncProvider
IChangeDataRetriever
INotifyingChangeApplierTarget
Conceptos
Microsoft Sync Framework
Crear un proveedor de sincronización no administrado
Enumerar los cambios
Controlar los conflictos
Aplicar los cambios
Sincronizar las unidades de cambio
Notificar el progreso de la sincronización
Filtrar los datos de sincronización
Admitir tareas de sincronización simultáneas
Consideraciones sobre el diseño de un proveedor personalizado estándar
Interoperar con fuentes de FeedSync
Recuperar una réplica obsoleta