Ver Mensaje Individual
  #5  
Antiguo 08-02-2013
code88 code88 is offline
Registrado
NULL
 
Registrado: feb 2011
Posts: 5
Reputación: 0
code88 Va por buen camino
Smile

Al gracias por el interes , voy a tratar de explicar lo mejor posible todo. Aclaro antes de empezar, por si notan algo medio raro, que es la primera vez que manejo cosas como ClientDataSet, DataSnap, modelo cliente servidor, transmisión de datos en red / web, etc.

Para empezar trabajo con Delphi XE3 Update 1, Firebird 2.5 y dbExpress.

La idea del proyecto es que permita sincronizar bases de datos entre sucursales de una empresa. Desde casa central se debe enviar cada X cantidad de tiempo los cambios que haya sufrido la base de datos (Insert, Update o Delete) al Datasnap que estaría en un servidor Web. A su vez, las sucursales deben bajar estos cambios cada cierto periodo de tiempo. Esto esta pensado para empresas que no tienen conexión a internet permanentemente, cuando vuelvan a conectarse preguntar al Web services por los cambios y bajarlos.

Para esto la idea es: Como Web Service un Servicio Datasnap TCP/IP. Y para los clientes (Casa central / sucursales) un servicio de windows común. Para ir desarrollando y probando la sincronización de las BD trabajo sobre mi propia PC. El proximo paso será probar el envio de datos.

Ahora bien los pasos de la sincronización es:
El cliente inicia la conexión con el DS y le solicita el listado de tablas a actualizar y fecha de última actualización. Con esta info hago las consultas en la BD del cliente y traigo los datos actualizados que cargo en un ClientDataSet por cada tabla. Luego le envio los XMLData al DS y corto la conexión entre ambios. Ahora comienzo a cargar estos XMLData a ClientDataSet dentro del DS para actualizar su Base de datos.

Antes de todo esto trate de hacer cosas mas simples como enviar el ClientDataSet o TStream con la info pero siempre me daba problemas para recuperar los datos en el DS y por lo que investigue es por la limitación de JSON para manejar tipos de datos mas complejos como por ejemplo punteros.

Todo esto me sirve, y funciona perfectamente. Ahora bien, vuelvo a lo que plantee en el primer post. Cuando trato de asignar XMLData muy grandes al cds, ese paso, puede llegar a tardar 20 minutos si el server DataSnap es un servicio. Pero si el DS lo creo como formularios entonces la asignación se produce en segundos.

Bueno creo que explique todo lo pedido, espero no haber pasado nada por alto.
Responder Con Cita