Arquitectura y clases para la sincronización punto a punto

La arquitectura de la API punto a punto de Sync Services for ADO.NET está diseñada para permitir a las bases de datos del mismo nivel intercambiar los cambios sin tener que llevar a cabo una sincronización a través de un servidor central. Sync Services también proporciona interfaces de programación de aplicaciones diseñadas para sincronizar clientes con un servidor central; para obtener más información, vea Arquitectura y clases para la sincronización del cliente y el servidor. En la sincronización punto a punto, normalmente cada base de datos del mismo nivel contiene el código de aplicación y el código de Sync Services para iniciar la sincronización. Durante cada sesión de sincronización, se sincronizan dos bases de datos del mismo nivel. Por ejemplo, dadas tres bases de datos del mismo nivel, podría sincronizar base1 y base2, a continuación, base2 y base3 y, finalmente, base1 y base3. En cada caso, una de las bases de datos del mismo nivel sería la base de datos local y la otra sería la base de datos remota. No es obligatorio sincronizar cada base de datos con todas las demás del mismo nivel, pero eso proporciona redundancia en el sistema. En el caso de tres bases de datos del mismo nivel, podría sincronizar base1 y base2 y, a continuación, base2 y base3. Base1 y base3 recibirían los cambios la una de la otra a través de base2.

Componentes de las ilustraciones de arquitectura

En las ilustraciones siguientes se muestran los componentes implicados en la arquitectura de dos niveles y en la arquitectura n-tier. Los componentes de las ilustraciones de arquitectura incluyen las bases de datos del mismo nivel y un conjunto de clases de la API de Sync Services. La arquitectura n-tier también incluye un proxy y un componente de servicio que debe escribir.

Arquitectura de dos niveles

La primera ilustración muestra una arquitectura de dos niveles que tiene dos bases de datos del mismo nivel.

Topología de sincronización de elementos del mismo nivel de dos niveles

A excepción de las dos bases de datos, todos los elementos de la ilustración corresponden a clases de Sync Services. Estas clases están incluidas en las DLL siguientes:

  • Microsoft.Synchronization.dll contiene SyncOrchestrator. La clase SyncOrchestrator se describe en la documentación básica de Sync Framework.

  • Microsoft.Synchronization.Data.dll contiene DbSyncProvider y DbSyncAdapter.

Las DLL dependen de System.dll y de System.Data.dll de .NET Framework 2.0 o versiones posteriores. Para las aplicaciones de dos niveles, todas las DLL de Sync Services residen en el equipo local para esa determinada sesión de sincronización. Para las aplicaciones n-tier, algunas DLL deben residir también en el equipo remoto. Para obtener más información, vea Cómo configurar el seguimiento de cambios y sincronizar los elementos del mismo nivel.

Arquitectura n-tier

La segunda ilustración muestra una arquitectura n-tier (de n niveles). Se requiere un servicio y un mecanismo de transporte para la comunicación entre un proxy en el equipo local y un servicio en el equipo remoto. A diferencia de la sincronización entre cliente y servidor, el proxy no forma parte de la API de Sync Services. Debe escribir un proxy que derive de KnowledgeSyncProvider. La clase KnowledgeSyncProvider se describe en la documentación básica de Sync Framework. Para descargar esta documentación, visite este sitio web de Microsoft. A continuación, el servicio se comunica con DbSyncProvider en el equipo remoto. Cómo configurar la sincronización punto a punto en arquitecturas n-tier.

Topología de sincronización de elementos del mismo nivel de n-tier (n niveles)

Base de datos del mismo nivel

La base de datos del mismo nivel puede ser cualquiera para la que esté disponible un proveedor de ADO.NET. Para obtener información sobre cómo hacer un seguimiento de los cambios de cada base de datos, vea Cómo configurar el seguimiento de cambios y sincronizar los elementos del mismo nivel.

Clases de Sync Services

Las clases siguientes se representan en la ilustración anterior: SyncOrchestrator, DbSyncProvider y DbSyncAdapter. Para obtener un ejemplo de cómo utilizar estas clases en una aplicación, vea Cómo configurar el seguimiento de cambios y sincronizar los elementos del mismo nivel.

Organizador de la sincronización

El organizador de la sincronización controla la sincronización como sigue:

  • Pasa por todas las tablas que se deben sincronizar.

  • Llama al proveedor de sincronización local de bases de datos del mismo nivel para recuperar y aplicar los cambios en la base de datos local.

  • Llama al proveedor de sincronización remoto de bases de datos del mismo nivel para recuperar y aplicar los cambios en la base de datos remota.

El organizador de la sincronización también mantiene información en el nivel de sesión para la sincronización y proporciona mensajes de confirmación, errores y estadísticas a la aplicación que inicia la sincronización. Para obtener más información, vea SyncOrchestrator en la documentación básica de Sync Framework.

Proveedor de sincronización de bases de datos del mismo nivel

El proveedor de sincronización de elementos del mismo nivel se comunica con cada elemento del mismo nivel y aísla al organizador de sincronización de la implementación específica de esa base de datos del mismo nivel. Las actividades principales del proveedor de sincronización de elementos del mismo nivel son:

  • Almacena información de las tablas del elemento del mismo nivel que están habilitadas para sincronización.

  • Permite a las aplicaciones recuperar los cambios producidos en la base de datos del mismo nivel desde la última sincronización.

  • Aplica los cambios incrementales a la base de datos del mismo nivel.

  • Detecta los cambios en conflicto.

Para obtener más información, vea DbSyncProvider.

Adaptador de sincronización

El adaptador de sincronización, que toma como modelo el adaptador de datos de ADO.NET, se define para cada tabla que se sincroniza. El adaptador de sincronización proporciona al proveedor de sincronización de elementos del mismo nivel los comandos específicos necesarios para interactuar con la base de datos servidor, como la propiedad InsertCommand que aplica inserciones de una base de datos del mismo nivel en otra base de datos de las mismas características. Dado que los adaptadores de sincronización usan el objeto ADO.NET DbCommand, puede usar cualquier estructura de comandos que sea compatible con ADO.NET. Esto incluye Transact-SQL insertado, procesos almacenados, vistas, funciones, etc. Los comandos sólo requieren un único resultado que defina la estructura y los datos que se deben transferir y aplicar. Para obtener más información, vea DbSyncAdapter.

Clases adicionales de la API

En las ilustraciones de este tema se muestran las clases principales de la API. No obstante, hay muchas clases que no se muestran. Para obtener información sobre todas las clases disponibles, vea Microsoft.Synchronization en esta documentación y en la documentación básica de Sync Framework, y vea también Microsoft.Synchronization.Data. En las secciones siguientes se ofrece una introducción a otras tres clases importantes que debe conocer. Para obtener un ejemplo de cómo usar estas clases en una aplicación, vea Cómo configurar el seguimiento de cambios y sincronizar los elementos del mismo nivel.

Ámbito de sincronización

Un ámbito es una agrupación lógica de objetos que se van a sincronizar. En el caso de la sincronización de bases de datos punto a punto, un ámbito normalmente es un conjunto de tablas. Para obtener más información, vea DbSyncScope.

Estadísticas de sesión de sincronización

Las estadísticas de sesión son un conjunto de estadísticas proporcionadas por el organizador de la sincronización para cada sesión de sincronización. Las estadísticas incluyen información de la fecha y hora de sincronización, el número de cambios procesados y cualquier conflicto o excepción que se genere. Para obtener más información, vea SyncOperationStatistics en la documentación básica de Sync Framework.

Variables de sesión de sincronización

Las variables de sesión son variables que se suministran al desarrollador para que pueda usarlas como parámetros para ejecutar comandos de selección, inserción, actualización y eliminación en cada elemento del mismo nivel. Para obtener más información, vea Cómo usar las variables de sesión para la sincronización punto a punto.

Vea también

Conceptos

Escenarios de colaboración (Sync Services)
Cómo configurar el seguimiento de cambios y sincronizar los elementos del mismo nivel