Requisitos de metadatos para proveedores estándar
Sync Framework requiere un conjunto determinado de metadatos para cada réplica y para cada elemento que se va a sincronizar.
Metadatos necesarios para cada réplica
Cada réplica tiene que almacenar el conjunto de metadatos que se muestra en la tabla siguiente.
Elemento de metadatos | Descripción |
---|---|
Identificador de réplica |
Se trata del identificador único de una réplica en una comunidad de sincronización. Aunque el identificador de réplica es flexible y, por consiguiente, el esquema puede definirlo para la comunidad, recomendamos un GUID de 16 bytes. El formato de un identificador de réplica que se pasa a un método Sync Framework debe coincidir con el formato especificado por el proveedor. Código administrado: el formato se especifica mediante la propiedad ReplicaIdFormat de la clase SyncIdFormatGroup. El identificador se representa mediante la clase SyncId. Código no administrado: el formato se especifica mediante el campo replicaId de la estructura Estructura ID_PARAMETERS. La estructura SYNC_ID representa el identificador. |
Contador actual |
Se trata del contador actual para la réplica. Tenga en cuenta que es un número conceptual y se puede deducir a partir de la versión local más reciente del conocimiento por cada elemento o con algún otro valor monótonamente creciente disponible para la réplica. Por ejemplo, una réplica podría utilizar la hora del reloj actual siempre que pueda evitar que ese valor se restablezca. Código administrado: se representa mediante un valor UInt64. Código no administrado: se representa mediante un valor ULONGLONG. |
Mapa de claves de réplica |
Es una asignación entre los identificadores de réplica y claves de 4 bytes. Debido a las repetidas apariciones de los identificadores de réplica en los metadatos (se recomienda que sean GUID de 16 bytes), es más eficiente representar los identificadores mediante una tabla para asignar los identificadores de réplica con las claves de 4 bytes. Estas claves se usan entonces siempre que se requieran referencias a réplicas determinadas. Código administrado: se representa mediante un valor ReplicaKeyMap. Código no administrado: se representa utilizando IReplicaKeyMap. |
Conocimiento actual |
Es el resumen de la información de versión que la réplica conoce para el ámbito especificado. El conocimiento de la réplica se usa a través de los servicios de metadatos y no se debería usar directamente. Código administrado: se representa mediante un valor SyncKnowledge. Código no administrado: se representa utilizando ISyncKnowledge. |
Conocimiento olvidado |
Permite a una réplica detectar que una réplica asociada no conoce los elementos que se han eliminado. Esto puede ocurrir cuando se hayan limpiado los marcadores de exclusión para esos elementos. El conocimiento olvidado se manipula a través de los servicios de metadatos. Código administrado: se representa mediante un valor ForgottenKnowledge. Código no administrado: se representa utilizando IForgottenKnowledge. |
Registro de conflictos |
Es un registro de los conflictos que se produjeron cuando se detectaron conflictos después de la enumeración de los cambios y no se resolvieron. Solo se necesitan réplicas para mantener un registro de conflictos si estos se guardaron durante la sincronización. La réplica determina la representación del registro de conflictos y Sync Framework no tiene que proporcionar acceso al mismo. Sin embargo, cuando se usa un aplicador de cambios, Sync Framework puede ayudar a mantener el registro de conflictos. Para obtener más información, vea Registrar y administrar conflictos. |
Registro de marcadores de exclusión |
Almacena información sobre la eliminación de elementos de una réplica de modo que los cambios de eliminación se propaguen correctamente en las comunidades de sincronización y los elementos eliminados no se vuelvan a introducir de forma accidental. Las réplicas deben mantener un registro de marcadores de exclusión. La réplica determina la representación de un registro de marcadores de exclusión y Sync Framework no tiene que proporcionar acceso al mismo. Para obtener más información, vea Administrar marcadores de exclusión. |
Metadatos necesarios para cada elemento
Cada elemento que se va a sincronizar debe tener el conjunto de metadatos que se muestra en la tabla siguiente.
Elemento de metadatos | Descripción |
---|---|
Identificador global |
Es un identificador de un elemento almacenado en una réplica. Dado que la réplica es responsable de generar los identificadores globales, la réplica puede asignar identificadores globales que hagan la enumeración más eficaz. Por ejemplo, una comunidad puede definir su formato de identificador global como un GUID que vaya precedido de un prefijo de 8 bytes. El prefijo se puede utilizar a continuación para controlar el criterio de ordenación de los identificadores globales. De este modo se permite que los proveedores usen intervalos para enumerar los cambios más fácilmente y dado que un intervalo puede contener un número grande de elementos, la estructura del conocimiento puede ser más compacta cuando los elementos se representan como grupos ordenados. Para obtener más información sobre los formatos de los identificadores globales, vea Identificadores flexibles. Código administrado: el formato se especifica mediante la propiedad ItemIdFormat de la clase SyncIdFormatGroup. El identificador se representa mediante la clase SyncId. Código no administrado: el formato se especifica mediante el campo itemId de la estructura Estructura ID_PARAMETERS. La estructura SYNC_ID representa el identificador. |
Versión actual |
Es la última versión actualizada para un elemento determinado. La versión actual contiene la clave de la réplica que actualizó el elemento en último lugar y el contador de la réplica cuando se realizó el cambio. Esta versión se almacena por cada unidad de cambio cuando un elemento utiliza unidades de cambio. Por ejemplo, un contacto podría tener números de versión de unidad de cambio distintos para los campos de número de teléfono y dirección. Código administrado: se representa mediante un valor SyncVersion. Código no administrado: se representa mediante SYNC_VERSION. |
Versión de creación |
Es la versión correspondiente a cuando se creó el elemento. La versión de creación contiene la clave de la réplica que creó el elemento y el contador de la réplica cuando se creó el elemento. Código administrado: se representa mediante un valor SyncVersion. Código no administrado: se representa mediante SYNC_VERSION. |
Requisitos de almacenamiento
Dado que la réplica determina el formato para el identificador global, la cantidad de espacio que se necesita para almacenar los metadatos para cada elemento varía. Sin embargo, cuando se utiliza el formato recomendado de un GUID más un prefijo de 8 bytes, la cantidad total de almacenamiento que se requiere es de 48 bytes, como se muestra en la tabla siguiente.
Elemento | Bytes |
---|---|
Identificador global |
24 (GUID + prefijo de 8 bytes) |
Versión actual |
12 (clave de réplica de 4 bytes + contador de 8 bytes) |
Versión de creación |
12 (clave de réplica de 4 bytes + contador de 8 bytes) |
48 bytes en total |
Metadatos para conflictos de restricción
Cuando los conflictos de restricción se resuelven combinando los elementos en el conflicto, se necesitan metadatos adicionales para los elementos combinados. Para obtener más información, vea Detectar y resolver conflictos de restricción.
Metadatos para filtros personalizados
Cuando se usan filtros personalizados, se necesitan metadatos adicionales para cada réplica y cada elemento. Para obtener más información, vea Filtrar los datos de sincronización.
Vea también
Referencia
Interfaz IReplicaKeyMap
Estructura SYNC_ID
Estructura SYNC_GID
Estructura SYNC_VERSION
ReplicaKeyMap
SyncId
SyncGlobalId
SyncIdFormat
SyncIdFormatGroup
SyncVersion
Conceptos
Administrar metadatos para proveedores estándar
Descripción del conocimiento de sincronización
Identificadores flexibles
Versiones de sincronización
Administrar marcadores de exclusión