Componentes principales de Sync Framework

Los componentes principales de Sync Framework se pueden usar desde un lenguaje no administrado para realizar la sincronización. Estos componentes se pueden usar para administrar metadatos y para crear proveedores y aplicaciones de sincronización.

Estructuras, enumeraciones y marcas

En la tabla siguiente se enumeran las estructuras, enumeraciones y conjuntos de marcas que define Sync Framework, así como las características con las que normalmente se asocia cada componente.

Componente Característica asociada

Estructura ID_PARAMETER_PAIR

Metadatos

Estructura ID_PARAMETERS

Metadatos

Estructura SYNC_FILTER_CHANGE

Filtro

Estructura SYNC_GID

Metadatos

Estructura SYNC_ID

Metadatos

Estructura SYNC_RANGE

Metadatos

Estructura SYNC_SESSION_STATISTICS

Sesión

Estructura SYNC_VERSION

Metadatos

Enumeración CHANGE_APPLICATION_ACTION

Servicio de aplicación de cambios

Enumeración COLLISION_CONFLICT_RESOLUTION_POLICY

Conflictos de restricción

Enumeración CONFLICT_RESOLUTION_POLICY

Conflictos de simultaneidad

Enumeración CONSTRAINT_CONFLICT_REASON

Conflictos de restricción

Enumeración FILTER_COMBINATION_TYPE

Filtro

Enumeración FILTERING_TYPE

Filtro

Enumeración KNOWLEDGE_COOKIE_COMPARISON_RESULT

Metadatos

Enumeración SYNC_CONSTRAINT_RESOLVE_ACTION

Conflictos de restricción

Enumeración SYNC_FULL_ENUMERATION_ACTION

Sincronización de recuperación

Enumeración SYNC_PROGRESS_STAGE

Devolución de llamada de la aplicación

Enumeración SYNC_PROVIDER_ROLE

Devolución de llamada de la aplicación

Enumeración SYNC_RESOLVE_ACTION

Conflictos de simultaneidad

Enumeración SYNC_SAVE_ACTION

Aplicación de cambios

Enumeración SYNC_SERIALIZATION_VERSION

Control de versiones

Enumeración SYNC_STATISTICS

Metadatos

Marcas SYNC_CHANGE_FLAG

Metadatos

Marcas SYNC_FILTER_INFO_FLAG

Filtro

Marcas SYNC_SERIALIZE

Metadatos

Interfaces que implementa Sync Framework

Sync Framework implementa las interfaces siguientes.

Interfaces de fábrica

Las interfaces siguientes se utilizan principalmente para crear otros componentes de Sync Framework. Cada una de estas interfaces se puede crear pasando CLSID_SyncServices y el identificador de interfaz especificado a CoCreateInstance.

Interfaz Identificador de interfaz

Interfaz IApplicationSyncServices

IID_IApplicationSyncServices

Interfaz IClockVectorServices

IID_IClockVectorServices

Interfaz IProviderCustomFilteredSyncServices

IID_IProviderCustomFilteredSyncServices

Interfaz IProviderFilteredSyncServices

IID_IProviderFilteredSyncServices

Interfaz IProviderFilteredSyncServices2

IID_IProviderFilteredSyncServices2

Interfaz IProviderSyncServices

IID_IProviderSyncServices

Interfaz IProviderSyncServices2

IID_IProviderSyncServices2

Interfaces de lote de cambios

Las interfaces siguientes representan un lote de cambios. Cada interfaz se puede obtener pasando el identificador de interfaz especificado al método QueryInterface de cualquier otra interfaz. Algunas interfaces solo se implementan cuando se cumplen las condiciones especificadas.

Interfaz Identificador de interfaz Condición

Interfaz ISyncChangeBatch

IID_ISyncChangeBatch

El lote de cambios no puede formar parte de una sincronización de recuperación.

Interfaz ISyncChangeBatch2

IID_ISyncChangeBatch2

Siempre.

Interfaz ISyncChangeBatchAdvanced

IID_ISyncChangeBatchAdvanced

Siempre.

Interfaz ISyncChangeBatchBase

IID_ISyncChangeBatchBase

Siempre.

Interfaz ISyncChangeBatchBase2

IID_ISyncChangeBatchBase2

Siempre.

ISyncChangeBatchWithFilterKeyMap Interface

IID_ISyncChangeBatchWithFilterKeyMap

Siempre.

Interfaz ISyncChangeBatchWithPrerequisite

IID_ISyncChangeBatchWithPrerequisite

Siempre.

Interfaz ISyncFullEnumerationChangeBatch

IID_ISyncFullEnumerationChangeBatch

El lote de cambios debe formar parte de una sincronización de recuperación.

Interfaz ISyncFullEnumerationChangeBatch2

IID_ISyncFullEnumerationChangeBatch2

El lote de cambios debe formar parte de una sincronización de recuperación.

Las interfaces siguientes representan un único cambio. Cada interfaz se puede obtener pasando el identificador de interfaz especificado al método QueryInterface de cualquier otra interfaz.

Interfaz Identificador de interfaz

Interfaz ISyncChange

IID_ISyncChange

Interfaz ISyncChangeWithFilterKeyMap

IID_ISyncChangeWithFilterKeyMap

Interfaz ISyncChangeWithPrerequisite

IID_ISyncChangeWithPrerequisite

Interfaz ISyncFullEnumerationChange

IID_ISyncFullEnumerationChange

Interfaz ISyncMergeTombstoneChange

IID_ISyncMergeTombstoneChange

Las interfaces siguientes se utilizan para agregar información adicional a un objeto de ISyncChange. Cada interfaz se puede obtener mediante el mecanismo especificado.

Interfaz Se obtiene

Interfaz IFilterTrackingSyncChangeBuilder

Al pasar IID_IFilterTrackingSyncChangeBuilder al método QueryInterface de un objeto de ISyncChangeBuilder.

Interfaz ISyncChangeBuilder

Se devuelve en varios métodos, como ISyncChangeBatchBase::AddItemMetadataToGroup.

Las interfaces siguientes se utilizan para administrar las unidades de cambio. Cada interfaz se puede obtener mediante el mecanismo especificado.

Interfaz Se obtiene

Interfaz ISyncChangeUnit

Al llamar a IEnumSyncChangeUnits::Next.

Interfaz IEnumSyncChangeUnits

Al llamar a un método como ISyncChange::GetChangeUnits.

Las interfaces siguientes se utilizan para generar o enumerar una lista de cambios. Cada interfaz se puede obtener mediante el mecanismo especificado.

Interfaz Se obtiene

Interfaz IDestinationChangeVersionsBuilder

Al llamar a IProviderSyncServices::CreateDestinationChangeVersionsBuilder.

Interfaz IDestinationChangeVersionsBuilder2

Al pasar IID_IDestinationChangeVersionsBuilder2 al método QueryInterface de un objeto de IDestinationChangeVersionsBuilder.

Interfaz IEnumSyncChanges

Al llamar a ISyncChangeBatchBase::GetChangeEnumerator o IDestinationChangeVersionsBuilder::GetChangeEnumerator.

Interfaz IFilterTrackingSyncChangeBuilder

Al pasar IID_IFilterTrackingSyncChangeBuilder al método QueryInterface de un objeto de IDestinationChangeVersionsBuilder.

Interfaces de aplicador de cambios

El proveedor de destino puede utilizar las interfaces siguientes para ayudar a administrar los conflictos y a aplicar cambios.

Cualquiera de las interfaces de la tabla siguiente se puede obtener pasando el identificador de interfaz especificado al método IProviderSyncServices::CreateChangeApplier o al método QueryInterface de cualquiera de las otras interfaces de la tabla.

Interfaz Identificador de interfaz

Interfaz IAsynchronousNotifyingChangeApplier

IID_IAsynchronousNotifyingChangeApplier

Interfaz ISynchronousNotifyingChangeApplier

IID_ISynchronousNotifyingChangeApplier

Interfaz ISynchronousNotifyingChangeApplier2

IID_ISynchronousNotifyingChangeApplier2

El aplicador de cambios registra lo siguiente de la interfaz con el proveedor de destino mediante una llamada a IAsynchronousNotifyingChangeApplierTarget::RegisterCallback.

Interfaz Identificador de interfaz

Interfaz IAsynchronousNotifyingChangeApplierTargetCallback

IID_IAsynchronousNotifyingChangeApplierTargetCallback

Las interfaces siguientes se utilizan para la comunicación entre el aplicador de cambios y un proveedor durante la detección de conflictos y la aplicación de cambios. Cada interfaz se puede obtener mediante el mecanismo especificado.

Interfaz Se obtiene

Interfaz ILoadChangeContext

Se pasa a métodos como ISynchronousDataRetriever::LoadChangeData.

Interfaz IFilterTrackingSaveChangeContext

Al pasar IID_IFilterTrackingSaveChangeContext al método QueryInterface de un objeto de ISaveChangeContext o un objeto de ISaveChangeWithChangeUnitsContext.

Interfaz IRecoverableErrorData

Al llamar al método IProviderSyncServices::CreateRecoverableErrorData, IRecoverableError::GetRecoverableErrorDataForChange o IRecoverableError::GetRecoverableErrorDataForChangeUnit.

Interfaz ISaveChangeContext

Se pasa a ISynchronousNotifyingChangeApplierTarget::SaveChange y a IAsynchronousNotifyingChangeApplierTarget::SaveChange.

Interfaz ISaveChangeContext2

Al pasar IID_ISaveChangeContext2 al método QueryInterface de un objeto de ISaveChangeContext.

Interfaz ISaveChangeWithChangeUnitsContext

Se pasa a ISynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnits y a IAsynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnits.

Interfaz ISaveChangeWithChangeUnitsContext2

Al pasar IID_ISaveChangeWithChangeUnitsContext2 al método QueryInterface de un objeto de ISaveChangeWithChangeUnitsContext.

Interfaz IDataRetrieverCallback

Se pasa a IAsynchronousDataRetriever::RegisterCallback.

Las interfaces siguientes se pueden utilizar en lugar de un aplicador de cambios estándar cuando se requiere mayor flexibilidad. Cada interfaz se obtiene mediante el mecanismo especificado.

Interfaz Se obtiene

Interfaz IChangeApplicationContext

Al llamar a IChangeApplicationServices::GetChangeApplicationContext.

Interfaz IChangeApplicationServices

Al pasar IID_IChangeApplicationServices a IProviderSyncServices::CreateChangeApplier.

Registro de conflictos

Las interfaces siguientes se utilizan para registrar conflictos. Cada interfaz se puede obtener mediante el mecanismo especificado.

Interfaz Se obtiene

Interfaz IConflictLogAccess

Puede implementarla un proveedor o se puede obtener pasando IID_IConflictLogAccess al método QueryInterface de un objeto de IMemoryConflictLog.

Interfaz IConflictLogWriter

Puede implementarla un proveedor o se puede obtener pasando IID_IConflictLogWriter al método QueryInterface de un objeto de IMemoryConflictLog.

Interfaz IEnumLoggedConflicts

Al llamar a IEnumLoggedConflictsBuilder::GetChangeEnumerator.

Interfaz IEnumLoggedConflictsBuilder

Al llamar a IProviderSyncServices2::CreateLoggedConflictsEnumBuilder.

Interfaz ILoggedConflict

Al llamar a IProviderSyncServices2::CreateLoggedConflict.

Interfaz IMemoryConflictLog

Al llamar a IProviderSyncServices2::CreateMemoryConflictLog.

Filtro

Las interfaces siguientes representan información sobre los filtros que se utilizan para controlar los datos que se incluyen en el ámbito de sincronización. Cada interfaz se puede obtener mediante el mecanismo especificado.

Interfaz Se obtiene

Interfaz IChangeUnitListFilterInfo

Al pasar la marca SYNC_FILTER_INFO_FLAG_CHANGE_UNIT_LIST al método IProviderFilteredSyncServices::CreateFilterInfo y después pasar IID_IChangeUnitListFilterInfo al método QueryInterface del objeto de ISyncFilterInfo devuelto.

Interfaz ICombinedFilterInfo

Al llamar a IProviderCustomFilteredSyncServices::CreateCombinedFilterInfo.

Interfaz ICustomFilterInfo

Al llamar a IProviderCustomFilteredSyncServices::CreateCustomFilterInfo.

Interfaz IFilterKeyMap

Al llamar a IProviderCustomFilteredSyncServices::CreateFilterKeyMap o ISyncChangeBatchWithFilterKeyMap::GetFilterKeyMap.

Interfaz IFilterRequestCallback

Se pasa a IRequestFilteredSync::SpecifyFilter.

Interfaz IFilterTrackingRequestCallback

Se pasa a IFilterTrackingProvider::SpecifyTrackedFilters.

Interfaz ISyncFilterInfo

Al llamar a métodos como IProviderFilteredSyncServices::CreateFilterInfo.

Interfaz ISyncFilterInfo2

Al pasar IID_ISyncFilterInfo2 al método QueryInterface de un objeto de ISyncFilterInfo.

Metadatos de conocimiento

Las interfaces siguientes representan un objeto de conocimiento. Cualquiera de las interfaces de la tabla se puede obtener pasando el identificador de interfaz especificado al método QueryInterface de cualquiera de las otras interfaces de la tabla. Tenga en cuenta que se producirá un error en algunos métodos de algunas interfaces cuando la versión mínima admitida del objeto de conocimiento no tenga el valor esperado, como sucede con el método ISyncKnowledge::GetSingleItemExceptions, en el que se produce un error si la versión mínima admitida no es SYNC_SERIALIZATION_VERSION_V1. Asimismo, algunos métodos cambiarán la versión mínima admitida, como el método IKnowledgeWithMarkers::AddAllChangeUnitsRequiredMarker, que establecerá la versión mínima admitida en SYNC_SERIALIZATION_VERSION_V3. Para obtener detalles sobre la versión mínima admitida que se requiere o se establece, vea la documentación de referencia de cada método.

Interfaz Identificador de interfaz

Interfaz ISyncKnowledge

IID_ISyncKnowledge

Interfaz ISyncKnowledge2

IID_ISyncKnowledge2

Interfaz IKnowledgeWithMarkers

IID_IKnowledgeWithMarkers

Interfaz IForgottenKnowledge

IID_IForgottenKnowledge

Las interfaces siguientes representan los componentes de un objeto de conocimiento con la versión mínima admitida SYNC_SERIALIZATION_VERSION_V1. La versión mínima admitida de un objeto de conocimiento se puede obtener mediante una llamada a ISyncKnowledge2::GetMinimumSupportedVersion. Cada interfaz se puede obtener llamando al método especificado.

Interfaz Se obtiene al llamar a

Interfaz IChangeUnitException

IEnumChangeUnitExceptions::Next

Interfaz IRangeException

IEnumRangeExceptions::Next

Interfaz ISingleItemException

IEnumSingleItemExceptions::Next

Interfaz IEnumChangeUnitExceptions

ISyncKnowledge::GetChangeUnitExceptions

Interfaz IEnumRangeExceptions

ISyncKnowledge::GetRangeExceptions

Interfaz IEnumSingleItemExceptions

ISyncKnowledge::GetSingleItemExceptions

Las interfaces siguientes representan los componentes de todas las versiones de un objeto de conocimiento. Cada interfaz se puede obtener llamando al método especificado.

Interfaz Se obtiene al llamar a

Interfaz IClockVector

ISyncKnowledge::FindClockVectorForItem o bien ISyncKnowledge::FindClockVectorForChangeUnit

Interfaz IClockVectorElement

IEnumClockVector::Next

IEnumClockVector Interface

IClockVector::GetClockVectorElements

Interfaz ICoreFragment

ICoreFragmentInspector::NextCoreFragments

Interfaz IReplicaKeyMap

IProviderSyncServices::CreateReplicaKeyMap o bien ISyncKnowledge::GetReplicaKeyMap.

Las interfaces siguientes se utilizan para inspeccionar o generar un objeto de conocimiento. Cada interfaz se puede obtener mediante el mecanismo especificado.

Interfaz Se obtiene

Interfaz IConstructReplicaKeyMap

Al pasar IID_IConstructReplicaKeyMap al método QueryInterface de un objeto de IReplicaKeyMap.

Interfaz ICoreFragmentInspector

Al pasar IID_ICoreFragmentInspector a ISyncKnowledge2::GetInspector.

Interfaz IKnowledgeBuilder

Al llamar a IClockVectorServices::CreateKnowledgeBuilder.

Interfaz IKnowledgeBuilder2

Al pasar IID_IKnowledgeBuilder2 al método QueryInterface de un objeto de IKnowledgeBuilder.

Interfaces de sesión

Las aplicaciones de sincronización utilizan las interfaces siguientes para iniciar una sesión de sincronización y recuperar información acerca de la sesión. Cada interfaz se puede obtener mediante el mecanismo especificado.

Interfaz Se obtiene

Interfaz ISyncSession

Al llamar a IApplicationSyncServices::CreateSyncSession.

Interfaz ISyncSessionExtendedErrorInfo

Al pasar IID_ISyncSessionExtendedErrorInfo al método QueryInterface de un objeto de ISyncSession.

Interfaz ISyncSessionState

Al llamar a IProviderSyncServices2::CreateSyncSessionState. Sync Framework también la pasa a IKnowledgeSyncProvider::BeginSession e IKnowledgeSyncProvider::EndSession.

Interfaz ISyncSessionState2

Al pasar IID_ISyncSessionState2 al método QueryInterface de un objeto de ISyncSessionState.

Interfaz ISyncDataConversionControl

Al pasar IID_ISyncDataConversionControl al método QueryInterface de un objeto de ISyncSessionState.

Interfaces de datos de devolución de llamada de la aplicación

Sync Framework pasa las interfaces siguientes a una aplicación de sincronización utilizando el método de devolución de llamada especificado.

Interfaz Método de devolución de llamada

Interfaz IChangeConflict

ISyncCallback::OnConflict

Interfaz IConstraintConflict

ISyncConstraintCallback::OnConstraintConflict

Interfaz IRecoverableError

ISyncCallback::OnRecoverableError

Otras interfaces

La interfaz siguiente se utiliza para registrar un convertidor de proveedor. Se puede obtener llamando al método especificado.

Interfaz Se obtiene al llamar a

Interfaz IProviderConverterRegistration

IProviderSyncServices2::CreateProviderConverterRegistration

Implementación por proveedores de sincronización

Los proveedores de sincronización implementan las interfaces siguientes.

Interfaces de proveedor

El método QueryInterface del objeto de ISyncProvider debe devolver cada una de las interfaces siguientes al recibir el identificador de interfaz especificado. La aplicación de sincronización pasa estas interfaces al objeto de sesión de sincronización mediante IApplicationSyncServices::CreateSyncSession.

Interfaz Identificador de interfaz

Interfaz IKnowledgeSyncProvider

IID_IKnowledgeSyncProvider

Interfaz ISyncProvider

IID_ISyncProvider

Interfaz IFilterTrackingProvider

IID_IFilterTrackingProvider

Interfaz IRequestFilteredSync

IID_IRequestFilteredSync

Interfaz ISupportFilteredSync

IID_ISupportFilteredSync

Interfaces de destino del aplicador de cambios

Un proveedor de destino que utiliza un aplicador de cambios sincrónico implementa las interfaces siguientes. El método QueryInterface del objeto de ISynchronousNotifyingChangeApplierTarget debe devolver cada interfaz implementada al recibir el identificador de interfaz especificado. Estas interfaces se pasan al componente de aplicador de cambios con un método como ISynchronousNotifyingChangeApplier::ApplyChanges.

Interfaz Identificador de interfaz

Interfaz ISynchronousNotifyingChangeApplierTarget

IID_ISynchronousNotifyingChangeApplierTarget

Interfaz ISynchronousNotifyingChangeApplierTarget2

IID_ISynchronousNotifyingChangeApplierTarget2

Interfaz IFilteredReplicaNotifyingChangeApplierTarget

IID_IFilteredReplicaNotifyingChangeApplierTarget

Interfaz IFilterTrackingNotifyingChangeApplierTarget

IID_IFilterTrackingNotifyingChangeApplierTarget

Un proveedor de destino que utiliza un aplicador de cambios asincrónico implementa la interfaz siguiente. Esta interfaz se pasa al componente de aplicador de cambios con un método como IAsynchronousNotifyingChangeApplier::ApplyChanges.

Interfaz Identificador de interfaz

Interfaz IAsynchronousNotifyingChangeApplierTarget

IID_IAsynchronousNotifyingChangeApplierTarget

Interfaces de recuperador de datos

Un proveedor de destino que utiliza un aplicador de cambios implementa las interfaces siguientes. Estas interfaces se pasan al componente de aplicador de cambios con un método como el especificado.

Interfaz Método

Interfaz IAsynchronousDataRetriever

IAsynchronousNotifyingChangeApplier::ApplyChanges.

Interfaz ISynchronousDataRetriever

ISynchronousNotifyingChangeApplier::ApplyChanges.

Otras interfaces de proveedor

Un proveedor implementa las interfaces siguientes para aprovechar diferentes características, como el filtro o la conversión de datos. La interfaz se pasa a Sync Framework con el mecanismo especificado.

Interfaz Mecanismo

Interfaz IEnumItemIds

La devuelve un método como IFilteredReplicaNotifyingChangeApplierTarget::GetNewMoveins.

Interfaz IProviderConverter

Se pasa a IProviderConverterRegistration::RegisterProviderConverter.

Interfaz ISupportLastWriteTime

Se devuelve cuando se pasa IID_ISupportLastWriteTime al método QueryInterface del objeto de recuperador de datos. Normalmente, es un objeto de ISynchronousDataRetriever.

Interfaz ISyncDataConverter

Se pasa a ISyncDataConversionControl::SetSourceDataConverter o a ISyncDataConversionControl::SetDestinationDataConverter.

Interfaz ISyncFilter

Se pasa a métodos como IProviderCustomFilteredSyncServices::CreateCustomFilterInfo o IFilterKeyMap::AddFilter.

Interfaz ISyncFilterDeserializer

Se pasa a IProviderCustomFilteredSyncServices::DeserializeFilterKeyMap o IProviderCustomFilteredSyncServices::DeserializeChangeBatchWithFilterKeyMap.

Implementación mediante aplicaciones de sincronización

Una aplicación de sincronización implementa las interfaces siguientes para recibir la notificación de los eventos que se producen durante la sincronización. Sync Framework obtiene estas interfaces al pasar el identificador de interfaz especificado al método QueryInterface de la interfaz ISyncCallback que se pasa a ISyncSession::RegisterCallback.

Interfaz Identificador de interfaz

Interfaz ISyncCallback

IID_ISyncCallback

Interfaz ISyncCallback2

IID_ISyncCallback2

Interfaz ISyncConstraintCallback

IID_ISyncConstraintCallback

Códigos de error

Sync Framework usa un conjunto de errores personalizados para notificar los problemas. Para obtener más información, vea Códigos de error de Sync Framework.

Vea también

Conceptos

API no administrada de Sync Framework
Microsoft Sync Framework
Aspectos básicos de los proveedores personalizados
Administrar metadatos para proveedores estándar
Implementar un proveedor estándar personalizado
Implementar una aplicación de sincronización