Arquitectura y clases de la sincronización de colaboración
En escenarios sin conexión y de colaboración, Sync Framework se puede utilizar en arquitecturas de 2 niveles y de n niveles. En las dos arquitecturas, la actividad se produce durante una sesión de sincronización: un organizador de la sincronización se comunica con dos proveedores de sincronización para recuperar y aplicar los cambios a cada base de datos. Los proveedores utilizan un adaptador de sincronización para cada tabla con los comandos SQL concretos que se requieren para esa tabla. Algunos proveedores exponen adaptadores que permiten personalizar estos comandos. Otros proveedores generan automáticamente adaptadores que reducen la complejidad asociada a la sincronización de un determinado almacén.
En la ilustración siguiente se muestra una arquitectura de dos niveles: todos los componentes de una sesión de sincronización residen en el equipo local y hay una conexión directa entre el equipo local y la base de datos del equipo remoto. Durante una sesión de sincronización, el equipo local es el equipo en el que se inicia la sincronización. Si desea iniciar la sincronización desde varios equipos, cada equipo debe contener todos los componentes que se muestran en la ilustración. Estos componentes se describen con más detalle después de las ilustraciones.
En la ilustración siguiente se muestra una arquitectura de n niveles: se necesitan componentes adicionales, incluidos componentes del equipo remoto, y la conexión a la base de datos remota se administra ahora en un proxy del equipo local y un servicio del equipo remoto. El desarrollador de la aplicación debe implementar el proxy y el servicio. Se proporcionan ejemplos para reducir la complejidad asociada a esta tarea. Al igual que en una arquitectura de 2 niveles, si desea iniciar la sincronización desde varios equipos, cada equipo debe contener todos los componentes.
Bases de datos
Las bases de datos pueden utilizar cualquier edición de SQL Server 2005 SP2 o posterior, incluida la versión SQL Server Compact 3.5 SP1 o versiones posteriores (de 32 y 64 bits), u otras bases de datos para las que hay disponible un proveedor ADO.NET. Sync Framework configura automáticamente el seguimiento de cambios y el almacenamiento de metadatos de las bases de datos de SQL Server y SQL Server Compact. Para obtener más información, vea Configurar y ejecutar la sincronización de colaboración (SQL Server). En las bases de datos que no utilizan SQL Server, debe proporcionarse la base de datos. Para obtener más información, vea Aprovisionar una base de datos servidor para la sincronización de colaboración (no SQL Server).
SyncOrchestrator
El organizador de la sincronización controla la sincronización como sigue:
Determina el orden y la dirección en que se deben aplicar los cambios, en función de la propiedad Direction.
Llama al proveedor de sincronización remoto para recuperar y aplicar los cambios en la base de datos remota.
Llama al proveedor de sincronización local para recuperar y aplicar los cambios en la base de datos local.
El organizador de la sincronización también mantiene información en el nivel de sesión durante la sesión de sincronización y proporciona correctamente mensajes, errores y estadísticas a la aplicación que inicia la sincronización. Para obtener más información, vea SyncOrchestrator.
SyncProvider (SqlSyncProvider, SqlCeSyncProvider y DbSyncProvider)
Un proveedor de sincronización se comunica con cada base de datos y aísla al organizador de sincronización de la implementación específica de la base de datos. Para las bases de datos de SQL Server Compact, utilice SqlCeSyncProvider; para otras ediciones de SQL Server, utilice SqlSyncProvider. Para otras bases de datos, utilice DbSyncProvider. Los tres proveedores heredan de RelationalSyncProvider. Las actividades principales del proveedor de sincronización son:
Recupera los cambios producidos en la base de datos desde la última sesión de sincronización.
Aplica los cambios incrementales a la base de datos.
Detecta los cambios en conflicto.
Nota
Si está sincronizando dos bases de datos de SQL Server Compact utilizando dos instancias de SqlCeSyncProvider, debe utilizar una arquitectura de n niveles. En este escenario, no se admiten arquitecturas de n niveles.
SyncAdapter (DbSyncAdapter y SqlCeSyncAdapter)
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 del servidor los comandos SQL específicos necesarios para interactuar con la base de datos.
En los adaptadores de sincronización que utilizan SqlSyncProvider y SqlCeSyncProvider, Sync Framework genera los comandos automáticamente (SqlCeSyncAdapter es privado para reducir la complejidad de sincronización con este almacén). En DbSyncAdapter, se crea el adaptador y se especifican los comandos, como el comando InsertCommand, que aplica las inserciones de otro servidor o base de datos cliente a la base de datos servidor. Dado que los adaptadores de sincronización usan el objeto DbCommand de ADO.NET, se puede usar cualquier estructura de comandos que sea compatible con ADO.NET. Esto incluye el SQL insertado, los procedimientos almacenados, las vistas en una única tabla, las funciones, etc. Los comandos solo requieren un resultado individual que defina la estructura y los datos que se van a transferir y aplicar. Para obtener más información, vea DbSyncAdapter. Para obtener más información acerca de los comandos, vea la sección "Adaptador de sincronización" en Configurar y ejecutar la sincronización de colaboración (no SQL Server).
Clases adicionales en 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 acerca de todas las clases disponibles, vea Microsoft.Synchronization, Microsoft.Synchronization.Data, Microsoft.Synchronization.Data.SqlServer y Microsoft.Synchronization.Data.SqlServerCe. En las secciones siguientes se ofrece una introducción a otras importantes clases que debe conocer.
DbSyncScope
Un ámbito de sincronización es una agrupación lógica de objetos que deben sincronizarse como una unidad. En el caso de la sincronización de bases de datos, un ámbito normalmente es un conjunto de tablas, donde las tablas pueden estar filtradas. Las tablas pueden estar incluidas en uno o varios ámbitos. Para obtener más información, vea la sección "Definir los ámbitos que se van a sincronizar" en Aprovisionar una base de datos servidor para la sincronización de colaboración (no SQL Server).
Objetos de aprovisionamiento de bases de datos
Para las bases de datos de SQL Server y SQL Server Compact, Sync Framework proporciona un conjunto de clases que se utilizan para describir los ámbitos y las tablas incluidas en cada ámbito. Una vez que se han descrito las tablas y los ámbitos, hay que utilizar objetos de Sync Framework para aplicar los scripts de aprovisionamiento a cada nodo. Los scripts crean una infraestructura de seguimiento y aplicación de cambios que se compone de metadatos, tablas, desencadenadores y procedimientos almacenados. En la tabla siguiente se enumeran las clases que se utilizan para configurar las bases de datos y los proveedores. Para obtener más información, vea Configurar y ejecutar la sincronización de colaboración (SQL Server).
SQL Server | SQL Server Compact | Descripción |
---|---|---|
DbSyncScopeDescription |
Representa un ámbito de sincronización, que es una agrupación lógica de tablas (opcionalmente, pueden estar filtradas) que se sincronizan como una unidad. |
|
Representa el aprovisionamiento de una base de datos de SQL Server o SQL Server Compact para un ámbito determinado que se representa mediante un objeto DbSyncScopeDescription. |
||
Representa información de configuración que SqlSyncProvider o SqlCeSyncProvider utilizan para un ámbito determinado. |
||
DbSyncTableDescription |
Representa el esquema de una tabla que está incluida en un ámbito de sincronización. |
|
DbSyncColumnDescription |
Representa el esquema de una columna que forma parte de una tabla que está incluida en un ámbito de sincronización. |
|
Representa información sobre las tablas y ámbitos de una base de datos de SQL Server o SQL Server Compact que está implicada en sincronización. |
||
SqlSyncTableProvisioning |
Representa el aprovisionamiento de una tabla de base de datos de SQL Server o SQL Server Compact representada por un objeto DbSyncTableDescription. |
|
SqlSyncProviderAdapterConfiguration |
Representa información de configuración del adaptador de sincronización de una tabla incluida en una base de datos de SQL Server o SQL Server Compact. |
SyncOperationStatistics
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 del tiempo de sincronización, número de cambios procesados y cualquier conflicto o excepción que se genere. Para obtener más información, vea SyncOperationStatistics.
DbSyncSession
El objeto DbSyncSession proporciona acceso a las variables de sesión de sincronización. Las variables de sesión son variables que se suministran al desarrollador para que este pueda usarlas como parámetros para ejecutar comandos de selección, inserción, actualización y eliminación en servidores que utilizan DbSyncProvider y DbSyncAdapter. Para obtener más información, vea Usar variables de sesión para la sincronización de colaboración.
DLL de Sync Framework
Las clases de sincronización de bases de datos de Sync Framework están incluidas en las DLL siguientes:
Microsoft.Synchronization.dll, que incluye SyncOrchestrator.
Microsoft.Synchronization.SqlServer.dll, que incluye SqlSyncProvider.
Microsoft.Synchronization.SqlServerCe.dll, que incluye SqlCeSyncProvider.
Microsoft.Synchronization.Data.dll, que incluye RelationalSyncProvider, DbSyncProvider y DbSyncAdapter.
Las DLL dependen de System.dll y de System.Data.dll de .NET Framework 2.0 o versiones posteriores.
Vea también
Conceptos
Escenarios de colaboración
Configurar y ejecutar la sincronización de colaboración (SQL Server)
Sincronizar otras bases de datos compatibles con ADO.NET