Ver Mensaje Individual
  #16  
Antiguo 11-11-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Reputación: 21
rastafarey Va por buen camino
Resp

Esplico un poco de como he pensado trabajar para solucionar dicho problem.

Con un servidor d epalicaciones y en los clientes se replic al base de datos pero solo lo necesario.

cuando un cleinte hace un insercion o modificacion o borrado le envia al servidor la informacion antes de realizar la accion localmente el servidor realiza la peticion si esta fallo en via un codigo d erro o un mensaje o x pero algo que diga qu efallo si no fallo, se incremente una variable un campo un generador que indica que hubo algun cambio en dicha tabla y lo envia al cliente, como todo funciono perfecto el cleinte termina d egurdar sus datos y si es necesario lo baj aa discos por si un apagon o un error.

Uan ve¿z qu eel servidor realiza la accion exitosa le envia los cambios al resto de los cleinte que esten conectados osea el registro en caso de insercion o modificacion y si es borrado solo envia la clave unica y en todos los casos tambien envia el valor de la variable o genrador que indica los cambios de la tabla dicha accion la reciven los cleinte sque esten conectados y hacen los indiqeue la accion;

El campo d ecambio lo lame de aui en adelante GenTablaChg
Tabla es el nombre de la tabla.

Ahora vemso el meoyo d el acosa y como se incrementa al velocidad.

Vamos un paso atras. Cuando el cliente se conecta pide todos lso cambios ocurridos en las tablas que el debe tener locales.

¿Como lo hace?. Primero envia todos pide todos los GenTablaChg y los copara con los que posee local mente en el caso qe se alla traido la tabla sino debe traerse la completa.

Si en algun moemento se ha traido ala tabla entonces compra todos los GenTablaChg que posee local mente y si alguno es mayor que lo que el tiene indica que dicha tabal cambio si no quiere decir que su tabal esta iguala la del servidor.

Si la algun GenTablaChg es mayor que su correspondiente localmente entonces este envia los campos primarios(en mi caso yo uso un id unico aparte de los cambios primarios para solo envia los id).

Ha se me habia pasadoo que cada tabal tiene un campo de la ultima modificacion

Entonces envio lo ids ejm.1, 23, 45, 67 mas la fecha de la ultima modificacion y en el servidor compara todos loa ides enviados con lo side de la tabla.

Octeniendo los registros insertados
Se compara los ids que son enviados y no esten el servidor y esto te devuelve lso insetados.

Octeniendo los registros modificados
Se hace los mismo que en el caso anterior pero agrgando la condicion que la fecha enviada sea meyor que l afecha del los del servidor, com esto octenemos los modificados.

Y fianalmemte los borrados
Se compara los id que este en lo senviados y no esten el servidor esto te da los borrados.

Luego armas tu dataset con un acampo qu eindique la accion arealizar. Bueno teniendo le cuenta que para los borrdso solo envias los id ye le res¿to d elos campos son nulos.

LA lelgar al cleinte el cleinmte verifica la accion si es insertar lso inseta en su data local si el modificacio nmodifica lso datos y si es borrado borra con lo sides enviados y baja a disco por si acaso.

Espero que esto te sirva.

Mira lo que si te digo es que hay que echar codigo trancao. Por que es trabajoso.

Ha te digo que estoy haciendo una aplicaion d este tipo con renobjects y clein datset y uso dbaware.

Y no he roto las reglas de uan aplicaion multicapa la que las capas las uso entre el servidor y los cleintes y no en el los cleinte sy la data local.

Aunque puedes usar las capas tabbien en los clientes. Pero ya con le trbajo que daria hacer la reacionentre el cleinte y el servidor es aceptable usar dbaware en los cleintes. ¿Ho no?.

Ha una cosa mas por favor den una opinion algo por el estilo par asaber si ahan leido el post.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita