5

Nos encontramos ante el siguiente problema que implica el mantenimiento de la siguiente sincronizados:Pesadilla de sincronización: ¿es posible utilizar Merge Replication (o RDA) entre 2 instancias de SQL CE sin IIS?

  • 1 Centralizado Server (IIS/MSSQL 2005)
  • Muchos clientes de escritorio de WPF distribuidos por ClickOnce
  • Muchos clientes móviles - (windows CE)

alt text http://img502.imageshack.us/img502/8246/deployment.png

Con estas limitaciones espinosos:

  • todas las relaciones de sincronización son bidireccionales
  • el escritorio & nodos móviles requieren modo fuera de línea
  • los nodos móviles no se puede sincronizar con el servidor central, pero son para sincronizar con los nodos de escritorio a través de USB. Los nodos de escritorio actúan como un servidor para los clientes móviles, no como el servidor central. Las actualizaciones de los nodos móviles necesitan propagarse al servidor central en virtud de la sincronización con el escritorio y luego sincronizar ese escritorio con el servidor central. phew.

Nasty.

Para sincronizar el escritorio y el servidor, sabemos que podemos usar Merge Replication, el servidor como proveedor, el escritorio como suscriptor, todo bien. PERO, ¿qué hay de la sincronización de los nodos móviles y de escritorio? Al parecer, el escritorio no puede ser un editor sin SQL Server + ISS, ¿verdad? Solo podemos implementar MSSQL CE en el escritorio.

Incluso si este fuera el caso, ¿podría un nodo ser suscriptor y editor? Sospecho que esta disposición no es compatible con la arquitectura Merge Replication: aparentemente hub and spoke es el único modelo admitido.

Estamos tratando de determinar si podemos eliminar RDA o Merge Replication como una posible solución; de ser así, probablemente sigamos con el Marco de sincronización MS.

Quizás hay otras tecnologías que podríamos considerar?

Gracias a todos,

Ashley

ACTUALIZACIÓN: acabamos comenzó a tener un juego con EM Sync Framework y que las rocas!

+0

Solo para aclarar: ¿necesita que el cliente móvil se sincronice con el escritorio mientras el escritorio está fuera de línea? Porque si el escritorio está en línea cuando el cliente móvil se sincroniza (usando ActiveSync, supongo?), Entonces el cliente móvil también podría "ver" el servidor. – MusiGenesis

+0

Sí, el dispositivo móvil necesita poder sincronizarse con el escritorio (portátil de campo) cuando también está fuera de línea. Ojalá pudiéramos limitarnos al cubo y hablar, sería mucho más simple. –

+0

Opuesto al viejo cubo y radios que tienen cubos (¡con radios!) –

Respuesta

7

Por razones que no están directamente relacionadas con su pregunta específica, creo que puede seguir adelante y eliminar RDA/Merge Replication como una posible solución. Microsoft no anuncia esto (por razones obvias), pero la duplicación de fusión no es 100% confiable en condiciones en las que la conexión de red puede abandonarse en el medio del proceso de replicación (lo que ocurre con bastante frecuencia con los clientes de Windows Mobile).

El resultado de este problema es que los cambios realizados en las bases de datos del cliente a veces no se propagan por completo a la base de datos maestra, pero no se obtiene una indicación detectable de que esto haya sucedido. Como se puede imaginar, esto es algo malo, especialmente si vendió a su cliente en esta solución basándose en la suposición de que la RDA funciona según lo anunciado.La única solución a corto plazo que encontramos para este problema fue implementar un proceso de doble redundancia muy torpe para confirmar que cada registro agregado o modificado en el cliente llegaba al servidor sin error. La solución a largo plazo fue nunca más usar RDA para nada.

Este problema puede haberse solucionado en versiones recientes de RDA (nuestro problema ocurrió con la versión más reciente hace 2 años), pero nunca lo sabré (una vez mordido dos veces tímido).

Actualización: por cierto, he tenido muchas personas con las que he hablado al respecto (incluidos los técnicos de soporte de Microsoft) niegan que esto sea posible, pero es muy fácil de verificar: agreguen un montón de datos sobre el cliente, luego inicie la replicación, luego retire el cable USB del dispositivo (suponiendo que su cliente sea Windows Mobile que se conecta a través de ActiveSync) mientras está en medio de esto.

Si me parece un poco molesto, es parcialmente porque esto fue lo que la tecnología de MS finalmente se vio forzada a decir (cita real): "bueno, simplemente siga replicando: los datos se fusionarán eventualmente".

1

Compruebe el Collaboration Scenarios (punto a punto) en Microsoft Framework 2.0. Los proveedores incluidos allí permiten sincronizar dos bases de datos de SQL Server Compact directamente. También pueden sincronizar directamente con otros proveedores.

Cuestiones relacionadas