De nuevo hola a todos. Quería daros las gracias por vuestro interés y comentaros como lo he resuelto.
Del lado del ERP, bajadas:
* Leo directorio FTP (nombres y sizes de los archivos) espero 3 segundos y empiezo a procesar
* Para cada archivo compruebo que el tamaño descargado coincida con el tamaño inicial leido, sino borro lo descargado y permanece en ftp
Del lado del ERP, subidas:
* Subida comprobando que el tamaño subido coincida con el tamaño del archivo que se sube.
Del lado del dispositivo, bajadas:
* Compruebo que el tamaño del unico archivo.db devuelto por FTP.List coincide con los bytes finales de downloadCompleted. Si no coinciden no renombro la .db
Del lado del dispositivo, subidas:
* Si el uploadCompleted Success es false o el tamaño de lo subido no coincide con el tamaño del archivo en el dispositivo, entonces borra lo que se hubiera podido subir al Ftp.
Todo esto sin montar sistema de archivos semaforicos y con un sistema que permite tanto la interrupcion de conexion como la concurrencia de usuarios... O ESO ESPERO... A probarlo en producción !!!!!!!!
Editado 19/04/21 23:56
A mi "gusto":
- FTP se utiliza para transferir archivos que NO tienen "datos", por ejemplo: una imagen, un PDF, etc.
- Cuando lo que se necesita es transmitir "datos", por ejemplo: un catalogo de productos, los pedidos realizados, los cobros realizados, etc., se debe de garantizar la "integridad de los datos" y para esto "normalmente" se utilizan web-services.
Es solo un punto de vista.
Saludos,
Edgar