Ho tre progetti in arrivo che condividono un problema comune:
devono avere la logica su un sistema web e hanno bisogno di un'applicazione locale (es. punto vendita) che comunichi con tale sistema attraverso un servizio web RESTful.
La mia soluzione
La soluzione che sono riuscito a trovare è quella di implementare nell'accodamento dei messaggi dell'applicazione desktop per archiviare le operazioni mentre il servizio è offline, più precisamente, accodamento dei messaggi asincroni . Tuttavia, questa è la parte facile (se tale è la soluzione migliore). Mi occupo anche della sincronizzazione dei dati e della risoluzione dei conflitti.
Il sistema principale deve essere basato sul web poiché è richiesta un'app Web per i report e il monitoraggio da parte degli stakeholder e i servizi web gestiranno le richieste per diversi stabilimenti.
I client desktop (preferibilmente thin) saranno implementati con Java (più precisamente Netbeans) e il sistema web con Symfony2. Due dei progetti richiedono l'integrazione dell'hardware per il client, quindi rendere l'applicazione desktop con tecnologia web (ad es. Appcelerator Titanium) potrebbe essere un grosso problema.
La mia domanda
Qual è una soluzione migliore che si ridimensiona, il che significa massima efficienza con il minimo sforzo (e preferibilmente senza costi aggiuntivi, come l'acquisto di un server di backup per operazioni locali)?
Chi altri ha già affrontato questo problema? Come hai risolto il tuo problema? Quali lezioni puoi condividere?
Come hai gestito la sincronizzazione?
Modifica: aggiunta una parte mancante alla mia domanda al punto 3