Entra

View Full Version : [JAVA] Consiglio per programma


DigitalKiller
15-09-2005, 10:22
Vorrei realizzare un programma in java e vi chiedo un consiglio su come procedere.
Vi spiego la situazione. Ci sono undici uffici: una sede principale e dieci uffici periferici situati anche a diversi km di distanza. Giornalmente, gli uffici periferici inviano alla sede un riepilogo (un file .dat) delle operazioni svolte; mentre settimanalmente ricevono dalla sede un file (sempre .dat).
Fra questi uffici sta per essere creata una vpn e mi è stato chiesto di scrivere un nuovo programma di gestione. Il problema è questo: vorrei fare in modo che i dati della sede siano aggiornati in tempo reale. Come devo procedere? Il programma utilizza Mysql: mi conviene creare una replica fra i db, oppure devo ricorrere a qualche altro strumento?

pinok
15-09-2005, 10:33
Non è chiara la tipologia dei dati e la metodologia di aggiornamento in tempo reale.

Se intendi dire che devono essere scritti subito sul sistema centrale ti conviene pensare a una intranet con server web in centrale+mysql e input dei dati nelle filiali da browser (pagine scritte in JSP).
Il vantaggio è che sei sicuro che tutti i client usino l'ultima release dell'applicazione.

Il punto debole è che se si interrompe la rete, il server non è più disponibile a distribuire l'applicazione ai client nè a ricevere i dati.
Se il tempo reale può essere inteso come ogni tot minuti o ore, ti serve ovviamente una replica in locale. Per farla o scrivi una applet firmata in modo che possa accedere in locale al file system e a un DB locale (ma ti devi installare troppi Mysql) o distribuisci direttamente un'applicazione fatta con le Swing (simile problema, peggiorato dal fatto che l'aggiornamento dell'applicazione deve essere fatto su tutti i client).
Potresti evitare il DB locale salvando i dati in XML.

Se in ogni filiale ci sono più client dell'applicazione potresti anche pensare a replicare la struttura intranet in ogni filiale (un server web+mysql) che poi vada ad aggiornare quello centrale, ma la sincronizzazione delle repliche diventa delicata.

DigitalKiller
15-09-2005, 11:05
Non è chiara la tipologia dei dati e la metodologia di aggiornamento in tempo reale.

Se intendi dire che devono essere scritti subito sul sistema centrale ti conviene pensare a una intranet con server web in centrale+mysql e input dei dati nelle filiali da browser (pagine scritte in JSP).
Il vantaggio è che sei sicuro che tutti i client usino l'ultima release dell'applicazione.

Il punto debole è che se si interrompe la rete, il server non è più disponibile a distribuire l'applicazione ai client nè a ricevere i dati.
Se il tempo reale può essere inteso come ogni tot minuti o ore, ti serve ovviamente una replica in locale. Per farla o scrivi una applet firmata in modo che possa accedere in locale al file system e a un DB locale (ma ti devi installare troppi Mysql) o distribuisci direttamente un'applicazione fatta con le Swing (simile problema, peggiorato dal fatto che l'aggiornamento dell'applicazione deve essere fatto su tutti i client).
Potresti evitare il DB locale salvando i dati in XML.

Se in ogni filiale ci sono più client dell'applicazione potresti anche pensare a replicare la struttura intranet in ogni filiale (un server web+mysql) che poi vada ad aggiornare quello centrale, ma la sincronizzazione delle repliche diventa delicata.

No, i dati no è necessario che vengano scritti immediatamente, mi va bene anche ogni mezz'ora. L'importante è che non debba aspettare il giorno dopo per avere i dati aggiornati.
Inizialmente avevo pensato anch'io ad un'applicazione web ma, come tu stesso hai detto, se il collegamento viene meno, le filiali rimarrebbero bloccate! Non posso neppure replicare la struttura intranet in quanto in ogni filiale è presente un unico pc. L'XML non mi convince...
L'unica soluzione mi sembra quella di installare l'applicazione e Mysql su tutte le filiali e poi impostare Mysql in modo da fare in automatico la replica..

nucarote
15-09-2005, 19:57
Se proprio non ti piacciono le web application basate su JSP allora dovresti pensare ad RMI.

DigitalKiller
16-09-2005, 08:00
Se proprio non ti piacciono le web application basate su JSP allora dovresti pensare ad RMI.

Ho scartato una web application non perchè non mi piace ma per il problema che ho detto prima. Se il server per qualche problema non dovesse funzionare, le filiali rimarrebbero bloccate! RMI?! Ma non si basa sempre su un client e su un server? Non rischio sempre di bloccare la filiale in caso di malfunzionamento del server?

nucarote
16-09-2005, 21:05
Ho scartato una web application non perchè non mi piace ma per il problema che ho detto prima. Se il server per qualche problema non dovesse funzionare, le filiali rimarrebbero bloccate! RMI?! Ma non si basa sempre su un client e su un server? Non rischio sempre di bloccare la filiale in caso di malfunzionamento del server?

Scusa non avevo letto sopra.Comunque con RMI è possibile fare anche un architettura P2P basta che ogni peer mantenga una lista degli altri peer con cui potersi collegare oltre ovviamente ad un registry in esecuzione.