Sono nuovo in questo settore e un po 'confuso sulle mie attuali riflessioni su un'implementazione del servizio web per la mia applicazione. Voglio sincronizzare tutti i client connessi con i dati attuali su un DB MySQL. Mi sono avvicinato per utilizzare i servizi web come per scopi di coordinamento, ma mi sono bloccato.
Il modo in cui ho provato a implementarlo è ...
Il servizio web sta eseguendo un demone per controllare / ascoltare le operazioni CRUD che interessano i dati DB. Una volta che si è verificata un'operazione CRUD, viene cancellato per notificare a tutti i client connessi e ciascun client a sua volta aggiorna il JTable con i dati del DB corrente e informa l'utente delle modifiche avvenute sul DB.
Questo è dove sono bloccato ...
Il modo in cui penso è (forse?) sbagliato, dal momento che concettualmente i servizi web sono in attesa delle richieste dei clienti e quindi gli inviamo la risposta corrispondente. Ma qui, non ci sono richieste da parte dei clienti. Il servizio web invia semplicemente una risposta (noification), che deve essere multicast poiché non è al corrente di un client "chiamante" - non c'è richiesta.
Pertanto, per mandare una richiesta a un cliente, è necessario "cron" per tutto il tempo del servizio web se si è verificata una modifica sul DB. Quindi il servizio web si presenta come vero o falso con i dettagli CRUD (CRUDEventFired (event_type, event_details)). Ma questo non è ottimale in quanto creerà traffico grande e (molto) inutile soprattutto quando non si verifica alcuna operazione CRUD. Inoltre, ci saranno due diversi deamons (uno nel servizio web e l'altro nell'app client) che controllano / ascoltano lo stesso tipo di evento e questo è ridondante.
Inoltre, con questa implementazione sembra che non sia affatto necessario un servizio Web e che il codice per controllare il DB per le modifiche possa essere implementato nel client. D'altro canto, l'impostazione del client responsabile delle modifiche del DB richiederebbe di codificare le stesse funzioni su piattaforme diverse (desktop, ios, android, ecc.), Mentre l'impostazione del servizio web come coordinatore per la sincronizzazione dei dati tra client richiederebbe il codice solo una volta la funzione appropriata e ciascun client implementano semplicemente il proprio NotificationListener ().
È sbagliato il modo in cui sto pensando di utilizzare i servizi web? Come dovrebbe essere cambiato? Ho anche bisogno di usare i servizi web?
Allego il mio diagramma per la tua convenienza.