Especificar una sincronización de instantáneas, de descarga, de carga y bidireccional
Sync Framework admite la sincronización de instantáneas, de descarga, de carga y bidireccional. Dada la flexibilidad que proporciona Sync Framework, puede especificar tipos diferentes de sincronización para tablas distintas. Para obtener más información, vea Arquitectura y clases para la sincronización del cliente y el servidor.
Este tema proporciona una introducción a las propiedades que se requieren para cada tipo de sincronización. En los temas de esta sección se describe cómo configurar los tipos de sincronización y cómo proporcionar ejemplos de código.
En esta sección
Propiedades que determinan la dirección de la sincronización
El tipo de sincronización que se usa para una tabla depende de los comandos de sincronización que se definan en SyncAdapter y en la propiedad SyncDirection de SyncTable. Los comandos de sincronización determinan los datos que pueden sincronizarse, y la propiedad SyncDirection determina los datos exactos que se sincronizan en una sesión determinada. Muchas veces son los mismos. Por ejemplo, puede especificar una sincronización bidireccional y los comandos para admitirla. No obstante, en algunos casos podría realizar la sincronización únicamente en un sentido. Por ejemplo, un vendedor puede necesitar acceso de sólo descarga a los datos de un producto, mientras que el administrador también podría necesitar la capacidad de actualizar los datos desde ubicaciones remotas. Pueden especificarse los comandos SyncAdapter para la sincronización bidireccional. No obstante, la propiedad SyncDirection está establecida en sólo descarga para el vendedor.
Para especificar la dirección de sincronización, establezca la propiedad SyncDirection en uno de los valores siguientes de la enumeración SyncDirection.
A continuación, para cada tabla, especifique manualmente un conjunto de comandos para SyncAdapter o use SqlSyncAdapterBuilder para generarlos. Para la sincronización de descarga solamente y bidireccional, el servidor también debe estar configurado de forma que lleve un seguimiento de los cambios incrementales de los datos. Para obtener más información, vea Seguimiento de cambios en la base de datos servidor.
Si crea comandos manualmente, definirá algunas o todas las propiedades siguientes en SyncAdapter:
SelectIncrementalInsertsCommand. Esta propiedad se usa en todas las clases de sincronización. La propiedad especifica el comando que recupera de la base de datos servidor: las inserciones iniciales para la sincronización de instantáneas, sólo descarga y bidireccional; y las inserciones incrementales para la sincronización de sólo descarga y bidireccional. De forma predeterminada, el comando también recupera el esquema de tablas de la base de datos servidor, para todas las clases de sincronizaciones. SqlCeClientSyncProvider aplica al cliente la creación del esquema y las inserciones.
SelectIncrementalUpdatesCommand y SelectIncrementalDeletesCommand. Estas propiedades se utilizan en una sincronización de sólo descarga y bidireccional: Las propiedades especifican los comandos que recuperan actualizaciones y eliminaciones en el servidor, de forma que SqlCeClientSyncProvider pueda aplicar las actualizaciones y eliminaciones al cliente.
InsertCommand, UpdateCommand y DeleteCommand. Estas propiedades se utilizan en una sincronización de sólo carga y bidireccional: Las propiedades especifican los comandos que aplican las inserciones, actualizaciones y eliminaciones efectuadas al servidor.
SelectConflictUpdatedRowsCommand y SelectConflictDeletedRowsCommand. Estas propiedades se utilizan habitualmente en una sincronización bidireccional: Las propiedades especifican los comandos que recuperan los conflictos de actualización y eliminación en el servidor. Para obtener más información, vea Controlar conflictos de datos y errores.
Una de las ventajas de especificar los comandos de sincronización manualmente es que se tiene más control sobre los comandos y los tipos de cambios que se cargan desde el cliente. Por ejemplo, si desea efectuar una sincronización bidireccional, pero no desea cargar las eliminaciones desde el cliente, no especifique un comando para la propiedad DeleteCommand. Para obtener un ejemplo de comandos manuales más complejos que los generados por SqlSyncAdapterBuilder, vea Controlar conflictos de datos y errores.
Si la propiedad SqlSyncAdapterBuilder genera los comandos, establezca la propiedad SyncDirection. Esta propiedad determina cuál de los comandos SyncAdapter se genera para una tabla. Para la sincronización de instantáneas o de sólo carga, esto es todo lo que se necesita definir. Para la sincronización de sólo descarga y bidireccional, también debe definir las propiedades que identifican las columnas del servidor utilizadas para el seguimiento de los cambios, y si los datos deben filtrarse. Estas propiedades son las siguientes:
Basándose en las columnas y los valores de filtro que se especifiquen para estas propiedades, SqlSyncAdapterBuilder genera los comandos apropiados.
Cambiar la dirección de sincronización
Después de sincronizar una tabla, puede especificar otra dirección de sincronización. No obstante, la sincronización de instantáneas no habilita el seguimiento de cambios en la base de datos cliente. Si prevé que una aplicación requerirá en algún momento el seguimiento de cambios de los datos, se recomienda no configurar la sincronización de instantáneas. Si configura la sincronización de instantáneas y después cambia a otro tipo de sincronización, debe estar al corriente de los problemas siguientes relacionados con el seguimiento de los cambios:
Si tiene configurada la sincronización simultánea y a continuación cambia a la sincronización de sólo descarga o bidireccional:
Deberá seleccionar y descargar nuevamente las filas del lado del servidor. A causa de esto, podrían producirse conflictos durante la fase de descarga.
Si tiene configurada la sincronización simultánea, realiza cambios en la base de datos cliente y, a continuación, cambia a la sincronización de sólo carga o bidireccional:
Los cambios realizados en la base de datos cliente no se cargarán. Si necesita que se carguen los cambios, lleve a cabo una actualización ficticia de las filas cambiadas.
Si tiene configurada la sincronización simultánea, cambia a la sincronización de sólo carga o bidireccional y, a continuación, realiza cambios en la base de datos cliente:
Pueden aparecer conflictos durante la fase de carga.
Vea también
Conceptos
Programar tareas comunes de sincronización de cliente y servidor
Herramientas que facilitan el desarrollo de aplicaciones