Información general y escenarios
Sync Framework habilita la sincronización entre las bases de datos. Proporciona una API intuitiva y flexible que permite generar aplicaciones destinadas a escenarios sin conexión y escenarios de colaboración. La API permite utilizar todos los componentes que se proporcionan o solo algunos de ellos, en función de la arquitectura y los requisitos de una aplicación. Sync Framework admite las topologías cliente-servidor, las topologías cliente-cliente y las topologías mixtas. En las topologías cliente-servidor, todos los clientes se sincronizan con un servidor central. En las topologías cliente-cliente, cada cliente puede sincronizarse con otro cliente sin necesidad de que los cambios pasen por un servidor central. Las topologías mixtas son una combinación de topologías cliente-cliente y topologías cliente-servidor.
Escenarios de sincronización
La capacidad de admitir trabajadores móviles y remotos se está convirtiendo en algo cada vez más importante para las organizaciones. Para ellas resulta muy importante asegurarse de que los trabajadores tienen acceso a la misma información cuando están dentro y fuera de la oficina. En la mayoría de los casos, estos usuarios disponen de un equipo portátil, un equipo de escritorio, un Smartphone o una PDA. Desde estos dispositivos, en ocasiones los usuarios pueden tener acceso a los datos a través de una conexión VPN o de algún otro método de conexión directa con la red corporativa. Para la mayoría de los usuarios remotos, esta solución no resulta del todo satisfactoria debido a desventajas importantes en las áreas siguientes:
Requisitos de la red
Para permitir a los usuarios tener acceso a la información, el dispositivo remoto debe disponer de una conexión permanente con la red corporativa mientras obtiene acceso a los datos. Para algunos trabajadores, como los que trabajan desde sus casas, esto podría no ser un problema. Para otros usuarios, como los representantes de ventas que viajan constantemente, podría resultar algo más complicado. Por ejemplo, si un representante de ventas está realizando una visita a un cliente y no puede tener acceso a los datos de inventario porque no hay conexión de red, no puede desempeñar su trabajo de manera eficaz.
Velocidades de acceso a los datos
En un entorno corporativo cliente-servidor típico, los usuarios tienen redes de alta velocidad que permiten el acceso rápido a la información. Sin embargo, los trabajadores remotos a menudo se conectan a través de redes lentas e inestables. Con una solución típica, cada vez que el usuario solicita un dato, este debe descargarse, ya que no existe forma alguna de almacenar los datos en el dispositivo. Por ejemplo, si un representante de ventas tiene que descargar la lista de productos cada vez que abre su aplicación, la cantidad de tiempo necesaria para rellenar la aplicación con información podría resultar frustrante.
Un único punto de error
Con este tipo de solución, a menudo los usuarios dependen de una única base de datos servidor. Si la base de datos no está disponible debido al tiempo de inactividad del servidor planeado o a errores del servidor, todos los trabajadores remotos perderán la conexión con los datos.
Escalabilidad del servidor
A medida que aumenta el número de personas que trabajan desde ubicaciones remotas, disminuye el rendimiento de los servidores corporativos, con lo que podría ser necesario agregar hardware.
Aplicaciones conectadas ocasionalmente
Una alternativa a la solución descrita en la sección anterior es implementar una aplicación que se conecte ocasionalmente. Las aplicaciones que se conectan ocasionalmente siguen permitiendo a un trabajador remoto obtener acceso a los datos, pero la información que desea está almacenada localmente. Para rellenar una base de datos local, las aplicaciones que se conectan de modo ocasional suelen utilizar la sincronización de datos.
La sincronización de datos consiste en la capacidad de tomar periódicamente la información que se almacena en una base de datos (una base de datos cliente, por ejemplo) y sincronizar los cambios con otra base de datos (una base de datos servidor, por ejemplo). Una solución basada en la sincronización ofrece la ventaja de que un usuario ya no necesita disponer de una conexión de red permanente para tener acceso a la información. Puesto que los datos se almacenan localmente, un usuario tiene acceso permanente a ellos al tiempo que reducen los requisitos de procesamiento desde la base de datos central. Además, dado que la velocidad de la red ya no supone una limitación, el usuario podrá tener acceso a los datos a la velocidad del equipo local.
La sincronización cliente-cliente evita el punto único de error al habilitar una sincronización que no está basada en todos los cambios que pasan por un servidor. La capacidad de insertar un lote de procesos de la aplicación a cada cliente ayuda también a abordar el problema de la escalabilidad de servidores.
Sync Framework utiliza los proveedores de sincronización para comunicarse con cada una de las bases de datos con las que se sincroniza. Los proveedores de bases de datos de Sync Framework, que son análogos a los proveedores de datos de ADO.NET, protegen a otros componentes de Sync Framework frente a la implementación concreta de cada base de datos. Sync Framework incluye cinco proveedores de bases de datos que admiten dos tipos de escenarios: escenarios sin conexión y escenarios de colaboración. En la ilustración siguiente se muestra un escenario sin conexión: en una topología cliente-servidor, los clientes se conectan a un servidor central para sincronizar los datos cuando hay una conexión disponible.
Una extensión común a este tipo de aplicación conectada de modo ocasional es la capacidad de admitir escenarios de colaboración. Se trata de escenarios en los que dos bases de datos se pueden sincronizar punto a punto sin tener que pasar por un concentrador central. En la ilustración siguiente se muestra una topología mixta en la que un servidor central se sincroniza con los clientes y los clientes pueden sincronizarse entre sí. Una topología así podría admitir una aplicación que permitiera a los usuarios compartir las notas de un proyecto. Los miembros del equipo de proyecto a menudo necesitan una copia local de los datos con la que trabajar. Cuando realizan modificaciones, pueden sincronizarse con un servidor para cargar los cambios y con otros miembros del equipo para intercambiar los cambios.
Los cinco proveedores de sincronización de bases que Sync Framework incluye se pueden dividir en dos categorías:
DbServerSyncProvider y SqlCeClientSyncProvider admiten escenarios sin conexión. Estos proveedores tienen las características siguientes:
Resultan adecuados para las topologías cliente-servidor.
Siempre se utilizan en pares. Por ejemplo, no se pueden sincronizar dos bases de datos servidor utilizando dos instancias de ServerSyncProvider (hay que utilizar SqlSyncProvider o DbSyncProvider en su lugar).
Pueden resultar menos complejos que los proveedores de colaboración, pero no pueden participar en topologías con otros proveedores de Sync Framework.
Para obtener más información sobre la sincronización sin conexión, vea Escenarios sin conexión.
SqlSyncProvider, SqlCeSyncProvider y DbSyncProvider admiten escenarios de colaboración. SqlSyncProvider y SqlCeSyncProvider se utilizan, respectivamente, para sincronizar bases de datos de SQL Server y SQL Server Compact. DbSyncProvider normalmente se utiliza para sincronizar bases de datos que no utilizan SQL Server. Estos proveedores tienen las características siguientes:
Resultan adecuados para las topologías punto a punto y las topologías mixtas. Pueden utilizarse en topologías cliente-servidor si se necesitan características más avanzadas, como el procesamiento por lotes complejo.
Se pueden utilizar de forma más flexible. Por ejemplo, se pueden sincronizar dos instancias de DbSyncProvider o una instancia de SqlSyncProvider y una instancia de SqlCeSyncProvider, etc.
Utilizan los metadatos de Sync Framework y pueden participar en topologías con otros proveedores de Sync Framework.
Para obtener más información acerca de la colaboración de datos, vea Escenarios de colaboración.