sd | | | |
mcrispino | |
Martín:
Intento contestar tus dudas...
> La aplicación esta configurada como Offline. En estos casos, la
interacción de la aplicación es con la base offline y luego los mecanismos
de sincronización se encargan del resto, o si hay conectividad hace el
mantenimiento del offline y el online al mismo tiempo?
La interacción de la aplicación es con la base de datos local. Si la
aplicación (o más bien, el objeto en cuestión) está generada como Offline,
se accede a servicios locales que van contra la base de datos local, no se
accede a los servicios en el servidor que irían contra la base de datos
central.
De todas formas, si la sincronización (Send) está configurada para hacerla
"when connected"
y además hay conexión en el momento en que se graban los datos, entonces se
van a mandar inmediatamente. Pero este es un proceso independiente del
acceso a la base de datos. Primero la aplicación graba, hace *commit*, y
eso dispara otro proceso que es el que sincroniza.
> En caso de interactuar solo con la base offline, ¿es más costoso el
acceso a los datos directo desde el evento load (la grilla tiene tabla
base) que la carga y la recorrida de la colección?
No, no debería ser más costoso. De hecho, te diría que es al revés: leer
los datos, cargarlos en una colección, grabarlos en la sesión,
recuperarlos, volver a pasarlos a una colección, recorrer la colección...,
eso tiene que ser más costoso que leer los datos directamente de la base de
datos...
> De momento la grilla carga en promedio entre 30 y 40 registros.
Con esa cantidad de registros igual, cualquiera de las dos soluciones (del
punto anterior) tiene que ser prácticamente instantánea...
> Hoy por cada modificación se actualiza la colección en la sesión. Aquí
tengo la duda acerca de si esto es aconsejable respecto a actualizar
directamente sobre la base y al final cambiar un estado al confirmar.
Eso depende de cómo querés que lleguen los datos al servidor... Actualizar
la colección y grabar todo junto al final te garantiza que se hace todo en
el mismo momento. Actualizando en la base de datos, lo que va a pasar es
que van a ir al servidor actualizaciones intermedias. Además si la
sincronización tiene "when connected", entonces va a estar mandando cada
una de las actualizaciones individuales.
Un ejemplo: cambio una cantidad de 1 a 2, y después me arrepiento y la
vuelvo a cambiar a 1. Si las actualizaciones son en memoria, estas dos
actualizaciones no van al servidor. Si son en la base de datos local,
entonces sí van a ir cuando sincronice.
Por lo tanto: la mejor solución en este caso va a depender de cómo querés
que funcionen los envíos al servidor.
Espero haber respondido las dudas...
Saludos.
*Marcos Crispino*
Research & Development | GeneXus
+598 2601 2082 | Simplifying Software Development
[image: GeneXus]
On Tue, Dec 1, 2020 at 9:56 PM Martin Gaston |
|
|
|
|
Back to sd |
|