Tengo tres proyectos entrantes que comparten un problema común:
necesitan tener la lógica en un sistema web y necesitan una aplicación local (por ejemplo, un punto de venta) que se comunique con dicho sistema a través de un servicio web RESTful.
Mi solución
La solución que se me ocurrió es implementar en la cola de mensajes de la aplicación de escritorio para almacenar operaciones mientras el servicio está fuera de línea, más precisamente, la cola de mensajes asíncrona . Sin embargo, esa es la parte fácil (si tal es la mejor solución). También me preocupa la sincronización de datos y la resolución de conflictos.
El sistema principal debe estar basado en la web, ya que se requiere una aplicación web para los informes y el monitoreo por parte de las partes interesadas, y los servicios web manejarán las solicitudes de varios establecimientos.
Los clientes de escritorio (preferiblemente delgados) se implementarán con Java (más específicamente Netbeans) y el sistema web con Symfony2. Dos de los proyectos requieren integración de hardware para el cliente, por lo que la aplicación de escritorio con tecnología web (por ejemplo, Appcelerator Titanium) podría ser un gran problema.
Mi pregunta
¿Cuál es una mejor solución que escala, lo que significa la máxima eficiencia con el mínimo esfuerzo (y preferiblemente sin costos adicionales, como comprar un servidor de respaldo para la operación local)?
¿Quién más ha tratado esto antes? ¿Cómo resolviste tu problema? ¿Qué lecciones puedes compartir?
¿Cómo lidiaste con la sincronización?
Editar: se agregó una parte faltante a mi pregunta en el punto 3
fuente