Comunidad de diseño web y desarrollo en internet online

Datos desconectados

Citar            
MensajeEscrito el 20 Feb 2017 06:23 am
Hola, amigos del foro.

Mi "problema", más que de programación, se trata de saber cómo hacer algo en particular.

Tengo un cliente que me pidió una aplicación web basada en PHP, MySQL, JS, HTML y CSS que debe estar alojada en la nube para que pueda controlar las distintas sucursales de su negocio desde distintos dispositivos y en donde quiera que esté tanto él como su personal de trabajo. El "problema" es que me pidió que la aplicación siga funcionando incluso si se interrumpe el servicio de internet (por alguna falla en el servicio, por poner un ejemplo). Aquí es en donde surge mi "problema". Sé que la tecnología ADO.NET es la ideal para trabajar con datos desconectados, pero, ¿cómo hacer esto con PHP+MySQL+JS?

Se me ocurren algunas ideas, como que, cuando se intente guardar los datos y se reciba un código de error porque no se pudo conectar con la base de datos (por la interrupción del servicio de internet), estos se almacenen en archivos JSON o de cualquier otro formato de texto plano, y, una vez que se restablezca el servicio de internet, se actualiza la información con lo almacenado en los archivos de texto plano. El punto es que, primero, ¿cómo evitaría conflictos entre lo almacenado de manera desconectada por la sucursal X y la sucursal Y o cualquiera de las otras? ¿Cómo sabrá el sistema en qué momento se restableció el servicio de internet? Para esto último, pienso que tendría que ser el mismo usuario quien se encargue, mediante algún botón que añada a la interfaz de la aplicación, de subir la información desconectada, para lo cual solo tendría que crear un script que lea la información de los archivos de texto plano y la inserte en la base de datos.

¿Es posible hacer esto? ¿Es una manera viable o quizá debo decirle a mi cliente que debe asegurarse de tener una conexión a internet permanente? ¿Puede haber otra solución que no implique cambiar el lenguaje de programación (es un requisito impuesto por el cliente)?

Por Alexis88

21 de clabLevel



Genero:Masculino  

Web developer

chrome
Citar            
MensajeEscrito el 20 Feb 2017 01:03 pm
No se en base a que .Net es mejor con sistemas desconectados ... cualquier lenguaje tiene mas o menos los mismos problemas. Básicamente la estrategia es hacer una cola de operaciones locales (evidentemente búsquedas o carga de listados no se pueden hacer a menos que la info se cargue previamente, lo cual puede ser ruinoso en sistemas grandes) Tienes que considerar la atomicidad de tus operaciones, y cuales son posibles de guardar en cola para el momento en que se retome la conexión o no. Saber si tienes o no conexión lo haces con un ping cada N segundos

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 20 Feb 2017 02:40 pm
Hola, solisarg.

Gracias por tu respuesta. Creo que la solución será más complicada de lo que supuse. Resulta que se trata de una cadena de tiendas (pequeños market stores) que utilizarán la aplicación para el registro de compra y venta de sus productos. Creo que será un problema si se interrumpe el servicio de internet, digamos, a la mitad de la jornada de trabajo, puesto que, cuando realizan una venta, necesitan tener la información del stock actualizada para que, al final de la jornada, cuadren los datos que arroja el sistema sobre el balance del día con lo que se puede verificar físicamente; es decir, si se vendieron N artículos y se obtuvo una ganancia de M dólares, físicamente se debe encontrar exactamente la misma información (en los estantes de las tiendas y almacén y la caja registradora). Imagino que habría que hacer una copia en caché o localStorage al final de cada operación; pero creo que esto puede llegar a saturar al servidor por tantas peticiones.

Por Alexis88

21 de clabLevel



Genero:Masculino  

Web developer

chrome
Citar            
MensajeEscrito el 20 Feb 2017 04:20 pm
¿Un e-commerce que funcione offline? ¿Really?.
Tomate el tiempo de explicarle

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 20 Feb 2017 04:26 pm
Bueno, la idea es que siempre funcione online, es el ideal; el detalle está en que me pidieron que tome en cuenta la posible ―e indeseable― situación en la que se interrumpa el servicio de internet, por ejemplo, por un corte en el suministro de energía eléctrica (las tiendas poseen generadores de energía, los cuales mantendrían encendidas a las computadoras, pero no a la central de la empresa que les provee el servicio de internet), o que ocurra una falla en el mismo servicio de internet, es decir, un problema de la empresa que provee el servicio.

Son situaciones hipotéticas y que, de llegar a suceder, serían casos aislados y poco recurrentes, pero quieren que la aplicación esté preparada para esos casos.

Por Alexis88

21 de clabLevel



Genero:Masculino  

Web developer

chrome
Citar            
MensajeEscrito el 20 Feb 2017 04:30 pm
Habitualmente cuando se intenta hacer una compra y no hay conexión se pone "No hay conexión, intente mas tarde", y su carrito permanece con los productos seleccionados (ahi si los podes meter en localstorage)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 20 Feb 2017 04:38 pm
Claro, esa sería una solución rápida y efectiva; el detalle es que esta gente quiere que la aplicación siga funcionando ya sea online como offline; por eso el título de este thread es "Datos desconectados". Nunca he trabajado de esa forma, por eso no sé qué respuesta darles; o les digo que sencillamente no se puede y que, en esos casos y solo en esos casos (de falla en la conexión a internet), hagan todo de manera manual y, ya cuando se restablezca la conexión, ingresen la información apuntada manualmente, o si quizá existe alguna manera de preparar a la aplicación de la manera en la que ellos desean que sea.

Por Alexis88

21 de clabLevel



Genero:Masculino  

Web developer

chrome
Citar            
MensajeEscrito el 20 Feb 2017 04:44 pm
Bueno, es lo que te comentaba en el primer POST, tienes que analizar el flujo de tus datos, atomicidad, tráfico y en base a eso ver cuando puedes encolar para procesar batch por ventanas de tiempo. Es complicado

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 20 Feb 2017 04:48 pm
Claro, eso lo entiendo, y, como dices, es complicado, aunque posible. Desde el hecho de tener la lista de productos en stock actualizada en modo offline y que todo siga funcionando con normalidad, ya me parece una idea utópica. Tendré que pensar bien qué decirle a estas personas.

Un saludo

Por Alexis88

21 de clabLevel



Genero:Masculino  

Web developer

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.