Sync Framework sincroniza los datos mesa por tabla, pero mis entidades se normalizan en conjuntos de tablas padre-hijo relacionadas. Esto crea problemas para mi aplicación donde una fila principal puede aparecer en el servidor para ser procesada, pero las filas secundarias pueden no aparecer por unos segundos. Si hay un problema de conexión entre mi aplicación cliente y el servidor, es posible que las filas secundarias no aparezcan durante un tiempo.Con MS Sync Framework 2.0, ¿cómo puedo manejar mejor las tablas relacionadas?
¿Cómo puedo diseñar mi aplicación para manejar las tablas secundarias sincronizadas por separado de las tablas padre?
El escenario específico que estoy viendo es recibir órdenes de trabajo en un servidor desde un sistema de backend para ser distribuidas a ingenieros en el campo usando tabletas o PDA. Estas órdenes de trabajo son entidades grandes y complejas que pueden cubrir media docena de tablas. Los ingenieros completan su trabajo, sincronizan los resultados y el servidor devuelve la orden de trabajo completada al sistema de back-end.
Algunas de mis ideas hasta ahora se publican a continuación.
Suena como que podría funcionar, pero ¿cómo se escalaría? ¿Sync Framework aún sincronizaría todas las Órdenes, luego todos los Detalles de la Orden? ¿Qué pasa si tengo 100 nuevos pedidos cada uno con 100 artículos? Si hay un error en el 99, ¿se va a retrasar todo? –
Esta respuesta no aborda los problemas inherentes al sincronizar tabla por tabla: ¿Qué pasa si tengo que sincronizar 20 tablas relacionadas? ¿Sincroco toda la base de datos en una transacción? Si pongo varias tablas en una transacción, haré que la transacción se ejecute durante mucho más tiempo. Si se agota el tiempo, no podré sincronizar nada. -1. –
Al compilar aplicaciones en las que piensa tener alguna sincronización, debe tener esto en cuenta al diseñar los datos de las aplicaciones. Por la naturaleza del motivo por el que quieres sincronizar. es decir, estás desconectado en algún momento o un enlace falla (digamos un enlace de 3g) en algún momento. Si diseñas la aplicación para que necesites 20 tablas al mismo paso, entonces sí, por diseño, debes tener una transacción de larga ejecución y, como dices que falla, entonces debes volver a tirar todo. Una salida es construir una sistema de tipo de archivo de registro donde se escriben los cambios, digamos por un desencadenante en una sola tabla, luego se sincroniza ... – JohnnyJP